SCP Artwork Hub Show Image

Show Image For SCP Artwork Hub .

目前为 2022-01-05 提交的版本。查看 最新版本

// ==UserScript==
// @namespace    https://greasyfork.org/zh-TW/users/142344-jasn-hr
// @name         SCP Artwork Hub Show Image
// @description  Show Image For SCP Artwork Hub .
// @copyright    2022, HrJasn (https://greasyfork.org/zh-TW/users/142344-jasn-hr)
// @license      GPL-3.0-or-later
// @version      1.1
// @icon         https://www.google.com/s2/favicons?domain=wikidot.com
// @include      http*://*scp*.wikidot.com/*art*
// @include      http://ko.scp-wiki.net/scp-artwork-hub-ko
// @grant        none
// ==/UserScript==

window.onload = function(){

    const ArtImageWindow = document.body.appendChild(document.createElement('img'));
    ArtImageWindow.style = 'position:fixed;right:5px;bottom:5px;border:0px;max-height:20%;max-width:20%;background-color:white;';
    ArtImageWindow.style.display = 'none';
    ArtImageWindow.addEventListener('mouseleave',function(e){
        ArtImageWindow.style.display = 'none';
        ArtImageWindow.style.right = '0px';
        ArtImageWindow.style.bottom = '0px';
        ArtImageWindow.src = '';
    });

    const loadImage = function(e){
        e.target.style.cursor = 'wait';
        let fetchURL = e.target.href;
        fetchURL = fetchURL.replace(/^(https?:\/\/[^\/]+\/adult:.*)$/,"$1/noredirect/true");
        fetch(fetchURL,{method:'GET',}).then(function(res){
            return res.text();
        }).then(function(resText){
            let parser = new DOMParser();
            let resDom = parser.parseFromString(resText,"text/html");
            let resDomBody = resDom.body;
            let ArtworkImage = resDomBody.querySelector('#page-content div.image-container img') ||
                resDomBody.querySelector('#page-content img.image:not([src="http://scp-jp.wikidot.com/local--files/nav:side/blank.png"]):not([src="http://scp-idn.wdfiles.com/local--files/shaun159-pixel-artpage/ball.jpg"])') ||
                resDomBody.querySelector('#page-content img.fillpg');
            let ArtworkImageSrc = ArtworkImage.src;
            ArtImageWindow.src = ArtworkImageSrc;
            let newright = window.innerWidth - e.clientX;
            let newbottom = window.innerHeight - e.clientY;
            ArtImageWindow.style.right = newright + 'px';
            ArtImageWindow.style.bottom = newbottom + 'px';
            ArtImageWindow.style.display = '';
            e.target.style.cursor = 'auto';
        });
    }

    const moveImage = function(e){
        let newright = window.innerWidth - e.clientX;
        let newbottom = window.innerHeight - e.clientY;
        ArtImageWindow.style.right = newright + 'px';
        ArtImageWindow.style.bottom = newbottom + 'px';
    }

    const takeoutImage = function(e){
        ArtImageWindow.style.display = 'none';
        ArtImageWindow.style.right = '0px';
        ArtImageWindow.style.bottom = '0px';
        ArtImageWindow.src = '';
    }

    let divContents = [
        document.querySelectorAll('div.content-type-description tr'),
        document.querySelectorAll('div.content-type-description-2 tr')
    ]
    let divContentTypeDescriptionTrs = divContents.reduce(function(a, b){return a.length > b.length ? a : b ;});
    for(let i=0;i<divContentTypeDescriptionTrs.length;i++){
        let artworkLinkOBJ = divContentTypeDescriptionTrs[i].querySelector('td:first-child a');
        console.log(artworkLinkOBJ);
        if(artworkLinkOBJ){
            artworkLinkOBJ.addEventListener('mouseenter',loadImage);
            artworkLinkOBJ.addEventListener('mousemove',moveImage);
            artworkLinkOBJ.addEventListener('mouseleave',takeoutImage);
        }
    }

}