KF Preview

預覽帖子內的圖

// ==UserScript==
// @name         KF Preview
// @namespace    http://tampermonkey.net/
// @author       nsps5606
// @version      2017.03.11.1
// @include      http://bbs.2dkf.com/thread.php?fid=*
// @include      http://bbs.9moe.com/thread.php?fid=*
// @include      http://bbs.kfgal.com/thread.php?fid=*
// @include      https://kf.miaola.info/thread.php?fid=*
// @require      http://libs.baidu.com/jquery/2.1.4/jquery.min.js
// @grant        GM_xmlhttpRequest
// @description  預覽帖子內的圖
// ==/UserScript==

(function() {

    var imgDiv = document.createElement("div");
    imgDiv.style.cssText = 'max-width: 510px; max-height: 510px; position: fixed; top: 10px; right: 10px; padding: 5px; background-color: #F9E47D; font-size: 24px;';
    imgDiv.id = "imgDiv";
    document.body.appendChild(imgDiv);

    var _imgs;
    var index = 0;
    var onHoverLink;
    var isStillOnHover = false;
    var tID = -1;
    var Links = $(".threadtit1 a");

    Links.mouseenter(function(){
        onHoverLink = this.href;
        isStillOnHover = true;
        tID = setTimeout(function(){
            updateImg(1);
            getLink();
        }, 500);
    });

    Links.mouseleave(function(){
        isStillOnHover = false;
        clearTimeout(tID);
        updateImg(5);
    });

    function getLink()
    {
        GM_xmlhttpRequest({
            method : 'GET',
            synchronous : false,
            url : onHoverLink,
            onload : function (response) {

                if(isStillOnHover)
                {
                    var parser = new DOMParser();
                    var responseDoc = parser.parseFromString(response.responseText, "text/html");

                    var _1F = responseDoc.getElementsByClassName("readtext")[0];
                    _1F.querySelectorAll(".readidms, .readidm")[0].innerHTML = ""; //去掉頭像
                    _imgs = _1F.querySelectorAll("img:not([src*='\/post\/smile\/em\/em'])"); //去掉表情

                    if(_imgs.length == 0)
                    {
                        updateImg(2);
                    }
                    else
                    {
                        index = 0;
                        getNextImg();
                    }
                }

            }
        });
    }

    function getNextImg()
    {
        var newImg = new Image();
        newImg.onload = function(event) {

            index++;
            if(this.naturalHeight > 200 && this.naturalWidth > 200)
            {
                updateImg(4);
                this.style.cssText = "max-width: 500px; max-height: 500px;";
                imgDiv.appendChild(this);
            }
            else if(index >= _imgs.length)
            {
                updateImg(3);
            }
            else if(isStillOnHover)
            {
                getNextImg();
            }
        };
        newImg.src = _imgs[index].src;
    }

    function updateImg(code)
    {
        if(code == 1)
        {
            imgDiv.innerHTML = "<div><b>Loading...</b></div>";
            imgDiv.style.display = "block";
        }
        else if(code == 2 && isStillOnHover)
        {
            imgDiv.innerHTML = "<div><b>沒有圖片</b></div>";
            imgDiv.style.display = "block";
        }
        else if(code == 3 && isStillOnHover)
        {
            imgDiv.innerHTML = "<div><b>沒有大尺寸圖片</b></div>";
            imgDiv.style.display = "block";
        }
        else if(code == 4 && isStillOnHover)
        {
            imgDiv.innerHTML = "";
            imgDiv.style.display = "block";
        }
        else if(code == 5)
        {
            imgDiv.style.display = "none";
            imgDiv.innerHTML = "";
        }
    }

})();