Greasy Fork is available in English.

Pixiv Previewer

显示大图预览,按热门度排序(pixiv_sk)。Show Preview, Sort by favorite numbers(pixiv_sk).

Устаревшая версия на 29.09.2018. Перейти к последней версии.

// ==UserScript==
// @name         Pixiv Previewer
// @namespace    https://github.com/Ocrosoft/PixivPreviewer
// @version      1.83
// @description  显示大图预览,按热门度排序(pixiv_sk)。Show Preview, Sort by favorite numbers(pixiv_sk).
// @author       Ocrosoft
// @match        *://www.pixiv.net/search.php*
// 作品页主页
// @match        *://www.pixiv.net/member.php?id=*
// 作品页其他
// @match        *://www.pixiv.net/member_illust.php?id=*
// @match        *://www.pixiv.net/ranking.php*
// @match        *://www.pixiv.net/bookmark_new_illust.php*
// @match        *://www.pixiv.net/discovery*
// @match        *://www.pixiv.net/
// @match        *://www.pixiv.net/new_illust.php*
// @match        *://www.pixiv.net/cate_r18.php
// @match        *://www.pixiv.net/bookmark.php*
// @match        *://www.pixiv.net/stacc*
// @grant        none
// @compatible   Chrome
// @compatible   FireFox
// @require      https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// ==/UserScript==

//function $(){}

/**
 * ---------------------------------------- 以下为 设置 部分 ----------------------------------------
 * -------------------------------------------- Settings --------------------------------------------
 */
// 注意: 修改设置请使用设置页面,此处修改无效
// 是否开启预览功能
var ENABLE_PREVIEW = true;
// 预览的图片质量,0:普通;1:原图
var PREVIEW_QUALITY = 0;
// 不显示多图切换时的加载图片
var HIDE_LOADING_IN_NEXTPIC = false;
// 是否开启排序功能
var ENABLE_SORT = true;
// 每次加载的页数
var GETTING_PAGE_COUNT = 3;
// 收藏量在此以下的不显示
var FAV_FILTER = 3;
// 隐藏已收藏图片
var HIDE_FAVORITE = false;
// true,使用新标签页打开图片;false,保持默认
var IS_LINK_BLANK = true;
// 语言,根据页面自动确定,其他不支持的语言默认使用English,可以修改成0使用简体中文
// 0:简体中文
// 1:English
var lang = 1;
/**
 * ---------------------------------------- 以下为 预览功能 部分 ----------------------------------------
 */
/**
* 搜索页、发现页节点结构
* section, [dataDiv]
* -div, [picList]
* --div
* ---figure
* ----div, [picDiv]
* -----a, [picHref]
* -----div(菜单)
* ==================
* 关注页节点结构
* div, [dataDiv], [infoDiv]
* -div, [picList]
* --div,
* ---figure
* ----div, [picDiv]
* -----a, [picHref]
* -----div(菜单)
* ==================
* 作品页、主页节点结构
* div, [dataDiv]
* -ul, [picList]
* --li
* ---a, [picHref]
* ----div, [picDiv]
* -----img
* -----div(菜单)
* 排行榜页
* div, [dataDiv]
* -div, [picList]
* --section
* ---div(这是排名)
* ---div
* ----a, [picHref]
* -----div, [picDiv]
* ------img
* ------div(菜单)
*/
var SearchPage = 0, FollowPage = 1, DiscoveryPage = 2, MemberPage = 3, HomePage = 4, RankingPage = 5, NewIllustPage = 6, R18Cate = 7, BookMarkPage = 8, StaccPage = 9; // 页面Id
var CurrentPage = SearchPage; // 该页面属于什么页面
var dataDivSelector = ['#js-react-search-mid', '#js-mount-point-latest-following', '#js-mount-point-discovery', '...', '...', '.ranking-items-container', '...', '...', '...', '...'];
var infoDivSelector = ['#js-mount-point-search-result-list', '#js-mount-point-latest-following', '...', '...', '...', '...', '...', '...', '...', '...'];

var dataDiv, infoDiv, picList, picDiv = [], picHref = []; // 相关元素,含义见上
var dataStr; // 更新后图片信息使用 json 保存在了 dataDiv 的 data-items 属性中
var imgData; // 保存解析后的 json
var mousePos; // 鼠标位置
var SORT_END = false; // 是否排序完成
var show_origin = false; // 默认预览使用原图
var i;
// 获取相关的元素
function getImageElements() {
    if (infoDivSelector[CurrentPage] == '...') {
        return;
    }
    dataDiv = $(dataDivSelector[CurrentPage]);
    infoDiv = $(infoDivSelector[CurrentPage]);
    dataStr = infoDiv.attr('data-items');
    imgData = eval(dataStr);
    picList = dataDiv.children()[0];
    var pics = $(picList).children();
    picDiv = [];
    picHref = [];
    for (var i = 0; i < pics.length; i++) {
        if(pics[i].className != pics[0].className){
            pics[i].remove();
            pics.splice(i--,1);
            continue;
        }
        picDiv.push(pics[i].childNodes[0].childNodes[0]);
        $(picDiv[i]).attr('data-index', i);
        picHref.push(picDiv[i].childNodes[0]);
        $(picHref[i]).attr('data-index', i);
        $(picHref[i]).attr('data-id', imgData[i].illustId);
    }
}
// 动图预览在相关页面调用的函数(自动执行,非动图页面无操作)
(function animePreview() {
    // 动图下载
    if (location.href.indexOf('medium') != -1 && $('._ugoku-illust-player-container').length > 0) {
        var script = document.createElement('script');
        script.src = 'https://greasyfork.org/scripts/30681/code/Pixiv.user.js';
        document.body.appendChild(script);
    }
    // 普通查看转换为全屏查看
    if (location.href.indexOf('medium') != -1 && location.href.indexOf('animePreview') != -1) {
        location.href = location.href.replace('medium', 'ugoira_view');
        return;
    }
    // 全图预览调节并返回 canvas 大小
    if (location.href.indexOf('ugoira_view') != -1 && location.href.indexOf('animePreview') != -1) {
        var itv = setInterval(function(){
            if ($('canvas').length > 0) {
                clearInterval(itv);
                var e, mouseX, mouseY, screenWidth, screenHeight, height, width, newHeight, newWidth, scale;
                scale = 1.0;
                mouseY = screenHeight = location.href.split('animePreview')[1];
                mouseX = mouseY.split(',')[0];
                mouseY = mouseY.split(',')[1];
                screenWidth = screenHeight.split(',')[2];
                screenHeight = screenHeight.split(',')[3];
                height = parseInt($('canvas').css('height').split('px'));
                width = parseInt($('canvas').css('width').split('px'));

                if (height > width) {
                    newHeight = screenHeight;
                    newWidth = newHeight / height * width;
                    if (mouseX > screenWidth / 2) {
                        while (newWidth * scale > mouseX - 5) {
                            scale -= 0.01;
                        }
                    } else {
                        while (newWidth * scale > screenWidth - mouseX - 5) {
                            scale -= 0.01;
                        }
                    }
                    newHeight *= scale;
                    newWidth *= scale;
                } else {
                    if (mouseX > screenWidth / 2) {
                        newWidth = mouseX - 5;
                    } else {
                        newWidth = screenWidth - mouseX - 5;
                    }
                    newHeight = newWidth / width * height;
                    while (newHeight * scale > screenHeight) {
                        scale -= 0.01;
                    }
                    newHeight *= scale;
                    newWidth *= scale;
                }
                newHeight -= 50;
                newWidth -= 25;

                $('canvas').css({ 'height': newHeight + 'px', 'width': newWidth + 'px' });
                var div = document.createElement('div');
                $(div).addClass('embed');
                div.innerHTML = '<dl><form class="_comment-form" style="width:100%;text-align:center;"><input id="dl_full" type="button" value="全屏版" class="submit-button" style="width:45%; padding:0px;margin-left:5px;"></form></dl>';
                $('canvas').parent()[0].appendChild(div);
                window.parent.iframeLoaded(newHeight + 25, newWidth + 25);
                var reg = new RegExp('src.*zip');
                var tmp = $('html')[0].innerHTML;
                var full = reg.exec(tmp)[0];
                full = full.split(':"')[1];
                $('#dl_full').click(function () {
                    window.open(full);
                });
            }
        }, 500);
        return;
    }
})();
// iframe 加载完成时调用(动图预览)
// arg: canvas 元素高,canvas 元素宽
var callbackScript = document.createElement('script');
callbackScript.innerHTML = "function iframeLoaded(height,width){$('.pixivPreview').children('iframe').attr({'width':width,'height':height});$('.pixivPreview').children('iframe').css('display','');$('.pixivPreview').children('img').remove();}";
document.body.appendChild(callbackScript);
// 测试图片是否有效
function validateImage(url) {
    url = url.replace('manga', 'manga_big');
    url += '&page=0';
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open('GET', url, false);
    xmlHttp.send(null);
    var src = $($(xmlHttp.responseText)[$(xmlHttp.responseText).length - 1]).attr('src');
    if (src.indexOf('.png') == -1) return true;
    else return false;
}
function preLoad(urls) {
    //return;
    for (i = 0; i < urls.length; i++) {
        var image = new Image();
        image.src = urls[i];
    }
}
function pixivPreviewer() {
    // 开启预览功能
    function activePreview() {
        // 鼠标移动到图片上显示预览图
        $(picHref).mouseover(function (e) {
            // 按住 Ctrl键 不显示预览图
            if (e.ctrlKey) {
                return;
            }
            // 图片索引
            var dataIndex = $(this).attr('data-index');
            // 从预览图移动到图片上,不应再次显示
            var tar = $(e.relatedTarget);
            var fFromPreviewElement = false;
            for (var i = 0; i < 3; i++) {
                if (tar.hasClass('pixivPreview') && tar.attr('data-index') == dataIndex) {
                    fFromPreviewElement = true;
                    break;
                }
                tar = tar.parent();
            }
            if (fFromPreviewElement) {
                return;
            }
            // 鼠标位置
            mousePos = { x: e.pageX, y: e.pageY };
            // 预览 Div
            var previewDiv = document.createElement('div');
            $(previewDiv).css({ 'position': 'absolute', 'z-index': '999999' });
            $(previewDiv).addClass('pixivPreview');
            $(previewDiv).attr('data-index', dataIndex);
            // 添加 Div 到 body
            $('.pixivPreview').remove();
            $('body')[0].appendChild(previewDiv);
            // 加载中图片节点
            var loadingImg = new Image();
            loadingImg.src = 'https://raw.githubusercontent.com/shikato/pixiv_sk/master/loading.gif';
            $(loadingImg).css('position', 'absolute');
            $(loadingImg).attr('data-index', dataIndex);
            previewDiv.appendChild(loadingImg);
            // 要显示的预览图节点
            var loadImg = new Image();
            $(loadImg).attr('data-index', dataIndex).css({'height':'0px', 'width':'0px'});
            previewDiv.appendChild(loadImg);
            // 表示显示的是原图的图标
            var originIcon = new Image();
            originIcon.src = 'https://source.pixiv.net/www/images/pixivcomic-favorite.png';
            $(originIcon).css({ 'position': 'absolute', 'bottom': '0px', 'right': '0px', 'display': 'none' });
            $(originIcon).attr('data-index', dataIndex);
            previewDiv.appendChild(originIcon);
            // 点击图标新网页打开原图
            $(originIcon).click(function () {
                window.open($(previewDiv).children('img')[1].src);
            });
            $(previewDiv).css({ 'left': mousePos.x + 'px', 'top': mousePos.y + 'px' });
            if ($(picDiv[dataIndex]).find('._work').length > 0){
                $($(picDiv[dataIndex]).find('._work')[0]).addClass('prev');
            }
            else $(picDiv[dataIndex]).addClass('prev');

            // 显示预览图
            // args: 图片地址数组,下标,原图地址数组
            function viewImages(imgs, index, imgsOrigin) {
                if (!imgs || imgs.length == 0) return;
                if (index < 0) return;
                if (!imgsOrigin || imgsOrigin.length == 0 || imgs.length != imgsOrigin.length) return;
                if (!index) index = 0;

                // 绑定点击事件,Ctrl+左键 单击切换原图
                if ($(previewDiv).children('script').length == 0) {
                    loadImg.addEventListener('click', function (ev) {
                        // 按住 Ctrl 来回切换原图
                        if (ev.ctrlKey) {
                            show_origin = !show_origin;
                            viewImages(imgs, index, imgsOrigin);
                        }
                        // 按住 Shift 点击图片新标签页打开原图
                        else if (ev.shiftKey) {
                            window.open(allImgsOrigin[parseInt($($('.pixivPreview').children('img')[1]).attr('img-index'))]);
                        }
                    });
                }
                // 多图时绑定点击事件,点击图片切换到下一张
                if (index == 0 && imgs.length != 1 && $(previewDiv).children('._work').length == 0) {
                    loadImg.addEventListener('click', function (e) {
                        if (e.ctrlKey || e.shiftKey) return;
                        var newIndex = parseInt($($('.pixivPreview').children('img')[1]).attr('img-index')) + 1;
                        if (newIndex == allImgs.length) newIndex = 0;
                        $('.pixivPreview').children('div').children('div').children('span')[0].innerHTML = (newIndex + 1) + '/' + allImgs.length;
                        viewImages(allImgs, newIndex, allImgsOrigin);
                        if (newIndex + 3 <= allImgs.length) {
                            preLoad((show_origin ? allImgsOrigin : allImgs).slice(newIndex + 3, newIndex + 4));
                        }
                    });
                }

                // 右上角张数标记
                if (imgs.length != 1 && index == 0 && $(previewDiv).children('._work').length == 0) {
                    var iconDiv = document.createElement('div');
                    iconDiv.innerHTML = '<div class="page-count"><div class="icon"></div><span>1/' + imgs.length + '</span></div>';
                    $(iconDiv).addClass('_work');
                    $(iconDiv).css({ 'position': 'absolute', 'top': '0px', 'display': 'none', 'right': '0px'});
                    $(iconDiv).attr('data-index', dataIndex);
                    $(iconDiv.childNodes).attr('data-index', dataIndex);
                    previewDiv.appendChild(iconDiv);
                }

                // 预加载
                // 不隐藏多图加载中图片
                if (!HIDE_LOADING_IN_NEXTPIC) {
                    // 显示加载中图片
                    $(loadingImg).css('display', '');
                    // 所有图未加载完成不显示
                    $(loadImg).css('display', 'none');
                } else {
                    // 第一次显示时未加载完成不显示
                    if ($(previewDiv).children('script').length == 0) {
                        $(loadImg).css('display', 'none');
                    }
                }

                $(originIcon).css('display', 'none');
                $(iconDiv).css({ 'display': 'none' });
                // 图片预加载完成
                loadImg.addEventListener('load', function () {
                    if (loadImg.src == '') return;
                    // 调整图片大小
                    var screenWidth = document.documentElement.clientWidth;
                    var screenHeight = document.documentElement.clientHeight;
                    var viewHeight, viewWidth;
                    // 调整图片位置和大小
                    var ret = adjustDivPos(loadImg, previewDiv, screenWidth, screenHeight);
                    viewWidth = ret[0];
                    viewHeight = ret[1];

                    $(loadingImg).css({ 'left': viewWidth / 2 - 24 + 'px', 'top': viewHeight / 2 - 24 + 'px' });
                    $(loadImg).css('display', '');
                    $(loadingImg).css('display', 'none');
                    $(iconDiv).css({ 'display': '' });
                    if (loadImg.src.indexOf('origin') != -1) {
                        $(originIcon).css({ 'display': '' });
                    } else {
                        $(originIcon).css({ 'display': 'none' });
                    }
                    // 第一次显示预览时将图片列表添加到末尾
                    // 第一次显示时,预加载后面3张
                    if ($(previewDiv).children('script').length == 0) {
                        var s = document.createElement('script');
                        // 输出预览图URL
                        var tmp = "var allImgs=['";
                        tmp += imgs[0];
                        for (var i = 1; i < imgs.length; ++i) {
                            tmp += "','" + imgs[i];
                        }
                        tmp += "'];";
                        // 输出原图URL
                        tmp += "var allImgsOrigin=['";
                        tmp += imgsOrigin[0];
                        for (i = 1; i < imgsOrigin.length; ++i) {
                            tmp += "','" + imgsOrigin[i];
                        }
                        tmp += "'];";
                        // 输出
                        s.innerHTML = tmp;
                        previewDiv.appendChild(s);

                        var urls = show_origin ? imgsOrigin : imgs;
                        if (urls.length > 4) urls = urls.slice(1, 4);
                        else urls = urls.slice(1);
                        preLoad(urls);
                    }
                });
                $(loadImg).attr('img-index', index);
                loadImg.src = show_origin ? imgsOrigin[index] : imgs[index];
            }
            // 进行 http 请求,获取预览图链接
            var xmlHttp = new XMLHttpRequest();
            xmlHttp.onreadystatechange = function () {
                if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    var resText = xmlHttp.responseText;
                    // 单图
                    try {
                        // 取得图片地址
                        // 预览图
                        var imgSource = RegExp('"regular":"http.*"').
                        exec(resText)[0].split('":"')[1].split('\"')[0];
                        // 原图
                        var imgOrigin = RegExp('"original":"http.*"').
                        exec(resText)[0].split('":"')[1].split('\"')[0];
                        // 拿到 id
                        var rep = RegExp('\\d*_p0').exec(imgSource)[0];
                        var id = rep.split('_')[0];

                        var pageCount = RegExp('"'+id+'":{"illustId":"'+id+'".*?"pageCount":\\d*').exec(resText)[0].split('pageCount":')[1];
                        pageCount = parseInt(pageCount);

                        // 单图就直接显示了
                        if (pageCount == 1) {
                            viewImages([imgSource], 0, [imgOrigin]);
                            return;
                        } else {
                            var imgs = [imgSource], imgsOrigin = [imgOrigin];
                            // 先不判定 jpg 和 png 了,加载会很慢,如果出现了加载不出来的情况了再加回来
                            for (var i = 1; i < pageCount; i++) {
                                imgs.push(imgSource.replace(rep, id + '_p' + i));
                                imgsOrigin.push(imgOrigin.replace(rep, id + '_p' + i));
                            }

                            viewImages(imgs, 0, imgsOrigin);
                            // 显示第0张,预加载1,2,3张
                            var urls = show_origin ? imgsOrigin : imgs;
                            if (urls.length > 4) urls = urls.slice(1, 4);
                            else urls = urls.slice(1);
                            //preLoad(urls);
                            return;
                        }
                    } catch (e) {
                        // empty
                    }
                    /* 以前的P站获取多图的方法
                    // 多图
                    try {
                        // 推出来的原图URL,暂时没有想到效率高的办法(imgs.length 次xmlHttpRequest)
                        var imgsOrigin = [];
                        var is_jpg = validateImage(xmlHttp.responseURL);
                        for (var i = 0; i < imgs.length; ++i) {
                            imgsOrigin.push(imgs[i].replace('img-master', 'img-original'));
                            imgsOrigin[i] = imgsOrigin[i].replace('_master1200', '');
                            if (!is_jpg) imgsOrigin[i] = imgsOrigin[i].replace('.jpg', '.png');
                        }
                        viewImages(imgs, 0, imgsOrigin);
                        // 显示第0张,预加载1,2,3张
                        var urls = show_origin ? imgsOrigin : imgs;
                        if (urls.length > 4) urls = urls.slice(1, 4);
                        else urls = urls.slice(1);
                        //preLoad(urls);
                        return;
                    } catch (e) {
                        // empty
                    }*/
                }
            };
            // 动图,illustType 值为2
            if (imgData[dataIndex].illustType == 2) {
                $(previewDiv).children().remove();
                var screenWidth = document.documentElement.clientWidth;
                var screenHeight = document.documentElement.clientHeight;
                previewDiv.innerHTML = '<iframe width="600px" height="50%" src="https://www.pixiv.net/member_illust.php?mode=ugoira_view&illust_id=' +
                    $(picHref[dataIndex]).attr('data-id') + '#animePreview' + mousePos.x + ',' + mousePos.y + ',' + screenWidth + ',' + screenHeight + '"/>';
                $(previewDiv).children('iframe').css('display', 'none');
                $(previewDiv).children('iframe').attr('data-index', dataIndex);
                loadingImg = new Image();
                loadingImg.src = 'https://raw.githubusercontent.com/shikato/pixiv_sk/master/loading.gif';
                $(loadingImg).css('position', 'absolute');
                previewDiv.appendChild(loadingImg);
                return;
            }
            // 多图, pageCount 不为1
            else if (imgData[dataIndex].pageCount != 1) {
                xmlHttp.open('GET', 'https://www.pixiv.net/member_illust.php?mode=manga&illust_id=' +
                             $(picHref[dataIndex]).attr('data-id'), true);
            }
            // 单图
            else {
                xmlHttp.open('GET', 'https://www.pixiv.net/member_illust.php?mode=medium&illust_id=' +
                             $(picHref[dataIndex]).attr('data-id'), true);
            }
            xmlHttp.send(null);
        });
        // 鼠标移出图片
        $(picHref).mouseout(function (e) {
            var tar = $(e.relatedTarget);
            var fIsPreviewElement = false;
            // 鼠标移动到预览图上
            for (var i = 0; i < 3; i++) { // 最多上溯3次
                if (tar.hasClass('pixivPreview')/* || tar.hasClass('prev')*/) {
                    fIsPreviewElement = true;
                    break;
                }
                tar = tar.parent();
            }
            if (fIsPreviewElement) {
                $('.pixivPreview').mouseleave(function (ev) {
                    var tar = $(ev.relatedTarget);
                    if (ev.relatedTarget == null) return;
                    var fIsHasClassPrev = false;
                    for (var i = 0; i < 5; i++) { // 最多上溯3次
                        if (tar.hasClass('prev') || tar.hasClass('pixivPreview')) {
                            fIsHasClassPrev = true;
                            break;
                        }
                        tar = tar.parent();
                    }
                    if (!fIsHasClassPrev) {
                        $('.pixivPreview').remove();
                        $('.prev').removeClass('prev');
                    }
                });
            }
            // 非预览图上
            else {
                $('.pixivPreview').remove();
                $('.prev').removeClass('prev');
            }
        });
        // 鼠标移动,调整预览图位置
        $(picHref).mousemove(function (e) {
            if (e.ctrlKey) {
                return;
            }
            var screenWidth = document.documentElement.clientWidth;
            var screenHeight = document.documentElement.clientHeight;
            mousePos.x = e.pageX; mousePos.y = e.pageY;
            if ($('.pixivPreview').find('iframe').length > 0) {
                adjustDivPos($('.pixivPreview').children('iframe')[0], $('.pixivPreview')[0], screenWidth, screenHeight);
            }
            else {
                adjustDivPos($('.pixivPreview').children('img')[1], $('.pixivPreview')[0], screenWidth, screenHeight);
            }
        });
        // 添加执行标记
        //$(picDiv).addClass('prev');
    }
    // 调整预览 Div 的位置
    // arg: Div 中 <img> 标签,预览 Div,屏幕可视区宽,屏幕可视区高
    function adjustDivPos(loadImgS, previewDiv, screenWidth, screenHeight) {
        var loadImg = loadImgS.cloneNode(false);
        $(loadImg).css({'height':'', 'width':''});
        var st = document.body.scrollTop + document.documentElement.scrollTop;
        var divX = mousePos.x + 5, divY = mousePos.y + 5;
        // 调整图片大小
        var height, width, newHeight, newWidth, scale = 1.0;
        height = loadImg.height;
        width = loadImg.width;
        // 长图
        if (height > width) {
            // 计算宽高
            newHeight = screenHeight;
            newWidth = newHeight / height * width;
            if (mousePos.x > screenWidth / 2) {
                while (newWidth * scale > mousePos.x - 5) {
                    scale -= 0.01;
                }
            } else {
                while (newWidth * scale > screenWidth - mousePos.x - 5) {
                    scale -= 0.01;
                }
            }
            newHeight *= scale;
            newWidth *= scale;
            // 设置新的宽高
            $(loadImgS).css({'height': newHeight + 'px', 'width': newWidth + 'px'});
        }
        else {
            // 计算宽高
            if (mousePos.x > screenWidth / 2) {
                newWidth = mousePos.x - 5;
            } else {
                newWidth = screenWidth - mousePos.x - 5;
            }
            newHeight = newWidth / width * height;
            while (newHeight * scale > screenHeight) {
                scale -= 0.01;
            }
            newHeight *= scale;
            newWidth *= scale;
            // 设置新的宽高
            $(loadImgS).css({'height': newHeight + 'px', 'width': newWidth + 'px'});
        }
        // 调整DIV的位置
        if (mousePos.x > screenWidth / 2) {
            divX = mousePos.x - 5 - newWidth;
            divY = st;
        } else {
            divX = mousePos.x + 5;
            divY = st;
        }
        $(previewDiv).css({ 'left': divX + 'px', 'top': divY + 'px', 'width': newWidth, 'height': newHeight});
        // 返回新的宽高
        return [newWidth, newHeight];
    }

    getImageElements();
    // 开启预览
    activePreview();
}
/**
 * ---------------------------------------- 以下为 排序功能 部分 ----------------------------------------
 */
function pixiv_sk(callback) {
    // 仅搜索页启用
    if (CurrentPage != SearchPage) {
        if (callback) {
            callback();
        }
        return;
    }

    // 加载中图片
    var LOADING_IMG = 'https://raw.githubusercontent.com/shikato/pixiv_sk/master/loading.gif';
    // 不合理的设定
    if (GETTING_PAGE_COUNT < 1 || FAV_FILTER < 0) return;
    // 当前已经取得的页面数量
    var mCurrentGettingPageCount = null;
    // 当前加载的页面 URL
    var mCurrentUrl = null;
    // 当前加载的是第几张页面
    var mCurrentPage = null;
    // 获取到的作品
    var mWorks = [];

    // 获取第 mCurrentPage 页的作品
    var getWorks = function (onloadCallback) {
        // 更新 URL
        var url = mCurrentUrl;
        if (mCurrentPage === 1 && mCurrentUrl.indexOf('p=1') == -1) {
            url += ('&p=' + mCurrentPage);
        } else {
            url = mCurrentUrl.replace(/p=\d+/, 'p=' + mCurrentPage);
        }
        mCurrentUrl = url;

        var req = new XMLHttpRequest();
        req.open('GET', mCurrentUrl, true);
        req.onload = function (event) {
            // 加载成功,调用回调函数
            onloadCallback(req);
            req = null;
        };
        // 加载失败
        req.onerror = function (event) {
            alert('获取作品失败!');
            req = null;
        };

        req.send(null);
    };

    // 排序和筛选
    var filterAndSort = function () {
        // 收藏量低于 FAV_FILTER 的作品不显示
        var tmp = [];
        mWorks.forEach(function (work, i) {
            var fav = work.bookmarkCount;
            if (fav >= FAV_FILTER && (HIDE_FAVORITE ? work.isBookmarked != true : true)) {
                tmp.push(work);
            }
        });
        mWorks = tmp;

        // 排序
        mWorks.sort(function (a, b) {
            var favA = a.bookmarkCount;
            var favB = b.bookmarkCount;
            if (favA === '') {
                favA = 0;
            } else {
                favA = parseInt(favA);
            }
            if (favB === '') {
                favB = 0;
            } else {
                favB = parseInt(favB);
            }
            if (favA > favB) {
                return -1;
            }
            if (favA < favB) {
                return 1;
            }
            return 0;
        });
    };

    mCurrentGettingPageCount = 0;
    mCurrentUrl = location.href;
    mCurrentPage = mCurrentUrl.match(/p=(\d+)/);

    if (mCurrentPage !== null) {
        mCurrentPage = parseInt(mCurrentPage[1]);
    }
    else {
        mCurrentPage = 1;
    }

    if (GETTING_PAGE_COUNT > 1) {
        // 显示加载中图片
        $(dataDivSelector[CurrentPage]).children('div').hide();
        $(dataDivSelector[CurrentPage]).prepend(
            '<div id="loading" style="width:50px;margin-left:auto;margin-right:auto;">'
            + '<img src="' + LOADING_IMG + '" /></div>'
        );

        // 翻页
        if(GETTING_PAGE_COUNT != 1) {
            if (mCurrentPage === 1) {
                if(mCurrentUrl.indexOf('p=1') == -1) {
                    $('.pager-container').empty().append(
                        '<a href="' + mCurrentUrl + '" style="margin-right:15px;">&lt;&lt;</a>'
                        + '<a href="' + mCurrentUrl + '&p=' + (mCurrentPage + GETTING_PAGE_COUNT) + '">&gt;</a>'
                    );
                } else {
                    $('.pager-container').empty().append(
                        '<a href="' + mCurrentUrl + '" style="margin-right:15px;">&lt;&lt;</a>'
                        + '<a href="' + mCurrentUrl.replace(/p=\d+/, 'p=' + (mCurrentPage + GETTING_PAGE_COUNT)) + '" style="margin-right:10px;">&gt;</a>'
                    );
                }
            }
            else {
                $('.pager-container').empty().append(
                    '<a href="' + mCurrentUrl.replace(/&p=\d+/, '') + '" style="margin-right:15px;">&lt;&lt;</a>'
                    + '<a href="' + mCurrentUrl.replace(/p=\d+/, 'p=' + (mCurrentPage - GETTING_PAGE_COUNT)) + '" style="margin-right:10px;">&lt;</a>'
                    + '<a href="' + mCurrentUrl.replace(/p=\d+/, 'p=' + (mCurrentPage + GETTING_PAGE_COUNT)) + '" style="margin-right:10px;">&gt;</a>'
                );
            }
        }

        var onloadCallback = function (req) {
            mWorks.push($(req.responseText).find(infoDivSelector[CurrentPage]).attr('data-items'));

            mCurrentPage++;
            mCurrentGettingPageCount++;
            // 设定数量的页面加载完成
            if (mCurrentGettingPageCount == GETTING_PAGE_COUNT) {
                $('#loading').remove();
                clearAndUpdateWorks();
            } else {
                getWorks(onloadCallback);
            }
        };

        getWorks(onloadCallback);
    }
    else {
        mWorks.push($(infoDivSelector[CurrentPage]).attr('data-items'));
        clearAndUpdateWorks(mWorks);
    }

    function clearAndUpdateWorks() {
        var tmp = [];
        for (var i = 0; i < mWorks.length; i++) {
            if(!mWorks[i])continue;
            var imgsOnePage = eval(mWorks[i]);
            for (var j = 0; j < imgsOnePage.length; j++) {
                tmp.push(imgsOnePage[j]);
            }
        }
        mWorks = tmp;
        filterAndSort();
        $(infoDivSelector[CurrentPage]).attr('data-items', JSON.stringify(mWorks));

        var divs = $($(dataDivSelector[CurrentPage]).children()[0]).children();
        //var divHTML = divs[0].outerHTML;
        var divTemplate = divs[0].cloneNode(true);
        $('#js-react-search-mid').children('div').empty();
        for (i = 0; i < mWorks.length; i++) {
            // 新建一个 DIV
            //var div = document.createElement('div');
            var div = divTemplate.cloneNode(true);
            $(dataDivSelector[CurrentPage]).children('div').append(div);
            //div.outerHTML = divHTML;
            // 修改 outerHTML 后要重新获取对象
            //div = $(dataDivSelector[CurrentPage]).children()[0].lastChild;
            // 图片的 <a> 标签
            var a = $(div).children('figure').children('div').children('a')[0];
            $(a).attr('href', $(a).attr('href').split('id=')[0] + 'id=' + mWorks[i].illustId);
            if (IS_LINK_BLANK) {
                $(a).attr('target', '_blank');
            }
            // 移除多图/动图标签
            $(a).children('div').remove();
            //console.log(mWorks);
            // 如果是多图添加多图标签
            if (mWorks[i].pageCount != 1) {
                var pageDiv = document.createElement('div');
                $(pageDiv).css({ '-webkit-box-flex': '0', '-ms-flex': 'none', 'flex': 'none', 'display': '-webkit-box', 'display': '-ms-flexbox', 'display': 'flex', '-webkit-box-align': 'center', '-ms-flex-align': 'center', 'align-items': 'center', 'z-index': '1', '-webkit-box-sizing': 'border-box', 'box-sizing': 'border-box', 'margin': '0 0 -24px auto', 'padding': '6px', 'height': '24px', 'background': 'rgba(0,0,0,.4)', 'border-radius': '0 0 0 4px', 'color': '#fff', 'font-size': '12px', 'line-height': '1', 'font-weight': '700' });
                var pageSpan = document.createElement('span');
                pageSpan.innerText = mWorks[i].pageCount;
                pageDiv.appendChild(pageSpan);
                var pageSpan2 = document.createElement('span');
                $(pageSpan2).css({ 'display': 'inline-block', 'margin-right': '4px', 'width': '10px', 'height': '12px', 'background': 'url(//s.pximg.net/www/js/bundle/3b9b0b9e331e13c46aeadaea83132203.svg)' });
                pageSpan.insertBefore(pageSpan2, pageSpan.firstChild);
                a.insertBefore(pageDiv, a.firstChild);
            }
            // 如果是动图添加动图标签
            if (mWorks[i].illustType == 2) {
                var animeDiv = document.createElement('div');
                $(animeDiv).css({ 'position': 'absolute', '-webkit-box-flex': '0', '-ms-flex': 'none', 'flex': 'none', 'width': '40px', 'height': '40px', 'background': 'url(//source.pixiv.net/www/js/bundle/f608d897f389e8161e230b817068526d.svg) 50% no-repeat', 'top': '50%', 'left': '50%', 'margin': '-20px 0 0 -20px' });
                a.appendChild(animeDiv);
            }
            // 图片 <div> 标签
            /*$(a).css('background-image', 'url(' + mWorks[i].url + ')');
            $(a).css('background-size', 'cover');
            if (parseInt(mWorks[i].width) > parseInt(mWorks[i].height)) {
                $(a).css({ 'width': '198px', 'height': 198.0 / mWorks[i].width * mWorks[i].height + 'px' });
            } else {
                $(a).css({ 'height': '198px', 'width':198.0 / mWorks[i].height * mWorks[i].width + 'px' });
            }*/
            var imageDiv = $('<div></div>');
            $(imageDiv).css('background-image', 'url(' + mWorks[i].url + ')');
            $(imageDiv).css({'background-size':'cover', '-webkit-box-flex':'0', 'flex':'none'});
            if (parseInt(mWorks[i].width) > parseInt(mWorks[i].height)) {
                $(imageDiv).css({ 'width': '198px', 'height': 198.0 / mWorks[i].width * mWorks[i].height + 'px' });
            } else {
                $(imageDiv).css({ 'height': '198px', 'width':198.0 / mWorks[i].height * mWorks[i].width + 'px' });
            }
            $(a).append(imageDiv);
            // 喜欢按钮 <div> 标签
            $($(a).parent().children('div').children('div')[0]).attr('data-id', mWorks[i].illustId);
            $($(a).parent().children('div').children('div')[0]).attr('data-click-label', mWorks[i].illustId);
            if (mWorks[i].isBookmarked == true) {
                $($(a).parent().children('div').children('div')[0]).addClass('on');
            }
            // 举报按钮 <a> 标签
            a = $(a).parent().children('div').find('a');
            a.attr('href', a.attr('href').split('=')[0] + '=' + mWorks[i].illustId);
            // 标题、作者栏 <ul> 标签
            var ul = $(div).find('figcaption').children()[0];
            // 标题 <a> 标签
            a = $($(ul).children('li')[0]).children('a');
            a.attr('href', a.attr('href').split('id=')[0] + 'id=' + mWorks[i].illustId);
            a.attr('title', mWorks[i].illustTitle);
            a[0].innerText = mWorks[i].illustTitle;
            // 作者 <a> 标签
            a = $($(ul).children('li')[1]).children('a');
            a.attr('href', a.attr('href').split('=')[0] + '=' + mWorks[i].userId);
            a.attr('title', mWorks[i].userName);
            a.attr('data-user_id', mWorks[i].userId);
            a.attr('data-user_name', mWorks[i].userName);
            a.find('div').css('background', 'url(' + mWorks[i].userImage + ') center top / cover no-repeat');
            a[0].lastChild.innerText = mWorks[i].userName;
            // 收藏量
            if ($(ul.lastChild).css('position') == 'relative') {
                $(ul.lastChild).remove();
            }
            if (mWorks[i].bookmarkCount != 0) {
                var li = document.createElement('li');
                ul.appendChild(li);
                li.outerHTML = '<li style="position: relative;"><ul class="count-list"><li><a href="/bookmark_detail.php?illust_id=' + mWorks[i].illustId + '" class="_ui-tooltip bookmark-count" data-tooltip="' + mWorks[i].bookmarkCount + '件のブックマーク"><i class="_icon sprites-bookmark-badge"></i>' + mWorks[i].bookmarkCount + '</a></li></ul></li>';
            }
        }
        if (mWorks.length === 0){
            $('.column-search-result')[0].innerHTML = '<div class="_no-item">未找到任何相关结果</div>';
        }
        // 恢复显示
        SORT_END = true;
        // 翻页部分
        if ($(dataDivSelector[CurrentPage]).parent().children('.column-order-menu')) {
            try{
                $(dataDivSelector[CurrentPage]).parent()[0].insertBefore(($(dataDivSelector[CurrentPage]).parent().children('.column-order-menu')[0].cloneNode(true)),$(dataDivSelector[CurrentPage])[0]);
            } catch(e) {}
        }
        $(dataDivSelector[CurrentPage]).children('div').show();

        if (callback) {
            callback();
        }
    }
}
/**
 * ---------------------------------------- 以下为 Cookie 部分 ----------------------------------------
 */
// 设置 Cookie
// arg: Cookie 名称,Cookie 值
function setCookie(name, value) {
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}
// 读取 Cookie
// arg: Cookie 名称
function getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg)) {
        return unescape(arr[2]);
    }
    else {
        return null;
    }
}
// 读取设置
function getSettings() {
    var settings = getCookie('pixivPreviewerSetting');
    if (!settings || settings == 'null') {
        return null;
    }
    settings = eval('[' + settings + ']')[0];

    if (!settings.previewQuality) {
        alert('更新后如果发现预览模糊,请到设置中将“预览功能图片质量”选项修改为“原图”');
        settings.previewQuality = '0';
        setCookie('pixivPreviewerSetting', JSON.stringify(settings));
    }
    if (!settings.hideFavorite) {
        alert('现在搜索页可以隐藏已收藏的图片,默认关闭,如需使用请到设置中开启');
        settings.hideFavorite = HIDE_FAVORITE.toString();
        settings.hideLoading = HIDE_LOADING_IN_NEXTPIC.toString();
        setCookie('pixivPreviewerSetting', JSON.stringify(settings));
    }

    return settings;
}
/**
 * ---------------------------------------- 以下为 教程设置 部分 ----------------------------------------
 */
// 显示设置
function showSetting(settings) {
    var guide;

    if (!settings || settings == 'null') {
        settings = getSettings();
    }
    var screenWidth = document.documentElement.clientWidth;
    var screenHeight = document.documentElement.clientHeight;
    if ($('#pp-guide').length === 0) {
        guide = document.createElement('div');
        guide.id = 'pp-guide';
        document.body.appendChild(guide);
        $(guide).css({
            'width': screenWidth + 'px', 'height': screenHeight + 'px', 'position': 'fixed',
            'z-index': 999999, 'background-color': 'rgba(0,0,0,0.8)',
            'left': '0px', 'top': '0px'
        });
    }
    guide = $('#pp-guide')[0];

    try {
        if ($('.home').children()[0].innerText == '首页') {
            lang = 0;
        }
    } catch(e) {
        if ($('._2s4C5qu').find('a')[0].innerText == '首页') { // TODO: 怎么不使用类
            lang = 0;
        }
    }
    // 中文
    var settingHTML =
        '<p style="text-align:center;color:white;font-size:25px;">' +
        '<span style="position:absolute; right:1%; top:1%; cursor: pointer;" id="pp-close">X</span>' +
        '<span>是否开启预览功能 </span>' +
        '<label><input id="inputEnablePreview" type="radio" name="enablePreview" value="true">开启&nbsp</label>' +
        '<label><input id="inputEnablePreview2" type="radio" name="enablePreview" value="false">关闭</label><br>' +
        '<span>预览功能图片质量 </span>' +
        '<label><input id="inputPreviewQuality" type="radio" name="previewQuality" value="0">普通&nbsp</label>' +
        '<label><input id="inputPreviewQuality2" type="radio" name="previewQuality" value="1">原图</label><br>' +
        '<span>隐藏多图加载图片 </span>' +
        '<label><input id="inputHideLoading" type="radio" name="hideLoading" value="true">隐藏&nbsp</label>' +
        '<label><input id="inputHideLoading2" type="radio" name="hideLoading" value="false">显示</label><br>' +
        '<span>是否开启排序功能 </span>' +
        '<label><input id="inputEnableSort" type="radio" name="enableSort" value="true">开启&nbsp</label>' +
        '<label><input id="inputEnableSort2" type="radio" name="enableSort" value="false">关闭</label><br>' +
        '<br><span>以下设置需要开启排序功能才能生效</span><br>' +
        '<span>排序功能每次加载的页面数</span>' +
        '<input type="text" style="height:28px;position:relative;top:-5px;left:5px;width:135px;text-align:center;" id="inputPageCount"><br>' +
        '<span>隐藏收藏量低于该值的作品</span>' +
        '<input type="text" style="height:28px;position:relative;top:-5px;left:5px;width:135px;text-align:center;" id="inputFilter"><br>' +
        '<span>是否使用新标签页打开图片 </span>' +
        '<label><input id="inputHrefBlank" type="radio" name="hrefBlank" value="true" checked="">开启&nbsp</label>' +
        '<label><input id="inputHrefBlank2" type="radio" name="hrefBlank" value="false">关闭</label><br>' +
        '<span>在搜索页隐藏已收藏的作品 </span>' +
        '<label><input id="inputHideFavorite" type="radio" name="hideFavorite" value="true">隐藏&nbsp</label>' +
        '<label><input id="inputHideFavorite2" type="radio" name="hideFavorite" value="false">显示</label><br><br><br></p>';
    // 英文
    if (lang == 1) {
        settingHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '<span style="position:absolute; right:1%; top:1%; cursor: pointer;" id="pp-close">X</span>' +
            '<span>Preview Works </span>' +
            '<label><input id="inputEnablePreview" type="radio" name="enablePreview" value="true" checked="">On&nbsp</label>' +
            '<label><input id="inputEnablePreview2" type="radio" name="enablePreview" value="false">Off</label><br>' +
            '<span>Preview Quality </span>' +
            '<label><input id="inputPreviewQuality" type="radio" name="previewQuality" value="0" checked="">Normal&nbsp</label>' +
            '<label><input id="inputPreviewQuality2" type="radio" name="previewQuality" value="1">Origin</label><br>' +
            '<span>Hide loding image when preview multi pictures </span>' +
            '<label><input id="inputHideLoading" type="radio" name="hideLoading" value="true">Hide&nbsp</label>' +
            '<label><input id="inputHideLoading2" type="radio" name="hideLoading" value="false">Show</label><br>' +
            '<span>Sort by favorite </span>' +
            '<label><input id="inputEnableSort" type="radio" name="enableSort" value="true" checked="">On&nbsp</label>' +
            '<label><input id="inputEnableSort2" type="radio" name="enableSort" value="false">Off</label><br>' +
            '<br><span>Following settings take effect when "Sort" is On</span><br>' +
            '<span>The number of pages loaded each time</span>' +
            '<input type="text" style="height:28px;position:relative;top:-5px;left:5px;width:135px;text-align:center;" id="inputPageCount"><br>' +
            '<span>Hide work which favorite number lower than</span>' +
            '<input type="text" style="height:28px;position:relative;top:-5px;left:5px;width:135px;text-align:center;" id="inputFilter"><br>' +
            '<span>Open work with a new browser tab </span>' +
            '<label><input id="inputHrefBlank" type="radio" name="hrefBlank" value="true" checked="">On&nbsp</label>' +
            '<label><input id="inputHrefBlank2" type="radio" name="hrefBlank" value="false">Off</label><br>'+
            '<span>Hide favorited works in search page </span>' +
            '<label><input id="inputHideFavorite" type="radio" name="hideFavorite" value="true">Hide&nbsp</label>' +
            '<label><input id="inputHideFavorite2" type="radio" name="hideFavorite" value="false">Show</label><br><br><br></p>';
    }

    guide.innerHTML = settingHTML;
    guide = $('#pp-guide')[0];
    $(guide).children().css('margin-top', parseInt(screenHeight) / 5 + 'px');
    if (settings.enablePreview == 'true') $(guide).find('#inputEnablePreview').attr('checked', true);
    else $(guide).find('#inputEnablePreview2').attr('checked', true);
    if (settings.previewQuality == '0') $(guide).find('#inputPreviewQuality').attr('checked', true);
    else $(guide).find('#inputPreviewQuality2').attr('checked', true);
    if (settings.hideLoading == 'true') $(guide).find('#inputHideLoading').attr('checked', true);
    else $(guide).find('#inputHideLoading2').attr('checked', true);
    if (settings.enableSort == 'true') $(guide).find('#inputEnableSort').attr('checked', true);
    else $(guide).find('#inputEnableSort2').attr('checked', true);
    $(guide).find('#inputPageCount').attr('value', settings.pageCount);
    $(guide).find('#inputFilter').attr('value', settings.favFilter);
    if (settings.linkBlank == 'true') $(guide).find('#inputHrefBlank').attr('checked', true);
    else $(guide).find('#inputHrefBlank2').attr('checked', true);
    if (settings.hideFavorite == 'true') $(guide).find('#inputHideFavorite').attr('checked', true);
    else $(guide).find('#inputHideFavorite2').attr('checked', true);
    // 保存按钮
    var button = document.createElement('button');
    $(button).addClass('_order-item _clickable');
    $(button).css({ 'color': 'white', 'margin-right': '10px' });
    $(guide).find('p')[0].appendChild(button);
    $(button).attr('bgc', '#127bb1'); $(button).css('background-color', $(button).attr('bgc'));
    $(button).mouseover(function () { $(this).css({ 'background-color': '#127bff' }); });
    $(button).mouseout(function () { $(this).css({ 'background-color': $(this).attr('bgc') }); });
    $(button).click(function () {
        settings = {
            'enablePreview': $("input[name='enablePreview']:checked").val(),
            'previewQuality': $("input[name='previewQuality']:checked").val(),
            'hideLoading': $("input[name='hideLoading']:checked").val(),
            'enableSort': $("input[name='enableSort']:checked").val(),
            'pageCount': $('#inputPageCount').val(),
            'favFilter': $('#inputFilter').val(),
            'linkBlank': $("input[name='hrefBlank']:checked").val(),
            'hideFavorite': $("input[name='hideFavorite']:checked").val()
        };
        setCookie('pixivPreviewerSetting', JSON.stringify(settings));
        $(guide).remove();
        location.href = location.href;
    });
    button.innerText = '保存设置';
    if (lang == 1) {
        button.innerText = 'Save';
    }
    // 重置按钮
    button = document.createElement('button');
    $(button).addClass('_order-item _clickable');
    $(button).css('color', 'white');
    $(guide).find('p')[0].appendChild(button);
    $(button).attr('bgc', 'red'); $(button).css('background-color', $(button).attr('bgc'));
    $(button).mouseover(function () { $(this).css({ 'background-color': 'red' }); });
    $(button).mouseout(function () { $(this).css({ 'background-color': $(this).attr('bgc') }); });
    $(button).click(function () {
        var comfirmText = "这会删除所有设置,相当于重新安装脚本,确定吗?";
        if (lang == 1) {
            comfirmText = 'Settings will be set to default, are you sure?'
        }
        if (confirm(comfirmText)) {
            setCookie('pixivPreviewerSetting', null);
            location.href = location.href;
        }
        $(guide).remove();
    });
    button.innerText = '重置脚本';
    if (lang == 1) {
        button.innerText = 'Reset';
    }
    guide.lastChild.appendChild(document.createElement('br'));
    // 关闭按钮
    $('#pp-close').bind('mouseover', function(){
        $(this).css('color', 'rgb(18, 123, 255)');
    }).bind('mouseout', function(){
        $(this).css('color', '');
    }).bind('click', function(){
        $(guide).remove();
    });
    // 刷新声明
    var span = document.createElement('span');
    span.innerHTML = '<p><br/>*保存或重置后会自动刷新使设置生效<br/>*排序功能只在搜索页生效</p>';
    if (lang == 1) {
        span.innerHTML = '<p><br/>*Save or Reset will refresh this page.<br/>*Sort only available in search Page.</p>';
    }
    $(span).css('font-size', '10px');
    guide.lastChild.appendChild(span);
}
// 添加设置按钮
function addSettingButton() {
    var toolbar = $('._toolmenu')[0];
    if (toolbar) {
        toolbar.appendChild(toolbar.firstChild.cloneNode(true));
        toolbar.lastChild.innerHTML = '<i class="_icon-12" style="border-radius: 100%;background:url(\'https://raw.githubusercontent.com/Ocrosoft/PixivPreviewer/master/settings.png\') top / cover no-repeat; "></i>';
        $(toolbar.lastChild)[0].className = 'item';
        $(toolbar.lastChild).css('margin-top', '10px');
        $(toolbar.lastChild).css('opacity', '0.8');
        $(toolbar.lastChild).click(function () {
            showSetting();
        });
    }
    else {
        toolbar = $('.heX3T-d')[0]; // TODO: 怎么不使用类
        toolbar.appendChild(toolbar.firstChild.cloneNode(true));
        toolbar.lastChild.innerHTML = '<a href="javascript:;"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve"><metadata> Svg Vector Icons : http://www.sfont.cn </metadata><g><path d="M377.5,500c0,67.7,54.8,122.5,122.5,122.5S622.5,567.7,622.5,500S567.7,377.5,500,377.5S377.5,432.3,377.5,500z"/><path d="M990,546v-94.8L856.2,411c-8.9-35.8-23-69.4-41.6-100.2L879,186L812,119L689,185.2c-30.8-18.5-64.4-32.6-100.2-41.5L545.9,10h-94.8L411,143.8c-35.8,8.9-69.5,23-100.2,41.5L186.1,121l-67,66.9L185.2,311c-18.6,30.8-32.6,64.4-41.5,100.3L10,454v94.8L143.8,589c8.9,35.8,23,69.4,41.6,100.2L121,814l67,67l123-66.2c30.8,18.6,64.5,32.6,100.3,41.5L454,990h94.8L589,856.2c35.8-8.9,69.4-23,100.2-41.6L814,879l67-67l-66.2-123.1c18.6-30.7,32.6-64.4,41.5-100.2L990,546z M500,745c-135.3,0-245-109.7-245-245c0-135.3,109.7-245,245-245s245,109.7,245,245C745,635.3,635.3,745,500,745z"/></g></svg></a>';
        $(toolbar.lastChild).css('margin-top', '10px');
        $(toolbar.lastChild).css('opacity', '0.8');
        $(toolbar.lastChild).click(function () {
            showSetting();
        });
    }
}
// 帮助
function guideStep(step) {
    $('#pp-guide').children().remove();
    $('#pp-guide').css('z-index', '999997');
    var step1 = function () {
        $(picDiv[0]).css({ 'position': 'absolute', 'z-index': '999998' });
        $('#pp-guide')[0].innerHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '将鼠标移动到图片上,稍等片刻便会出现预览图<br/>' +
            '如果不想显示预览图,可以按住 <span style="color:#127bb1;">Ctrl</span> 键<br/>' +
            '这时鼠标移动到图片上便<span style="color:#127bb1;">不会出现</span>预览图<br/>' +
            '<a id="nextStep" href="javascript:;">点击继续</a>' +
            '</p>';
        $('#nextStep').click(function () {
            step2();
        });
    };
    var step2 = function () {
        $('#pp-guide')[0].innerHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '按住 <span style="color:#127bb1;">Ctrl</span> 再点击预览图,可以切换成<span style="color:#127bb1;">原图模式</span><br/>' +
            '原图模式下右键保存就是最清晰的图片<br/>' +
            '原图模式会在预览图右下角显示一个笑脸<br/>' +
            '按住 Shift 点击预览图,或点击笑脸,可以用新标签页打开原图<br/>' +
            '<a id="nextStep" href="javascript:;">点击继续</a>' +
            '</p>';
        $('#nextStep').click(function () {
            step3();
        });
    };
    var step3 = function () {
        $('#pp-guide')[0].innerHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '预览图会动鼠标不容易移上去?<br/>' +
            '按住 <span style="color:#127bb1;">Ctrl</span> 键预览图就<span style="color:#127bb1;">不会跟随</span>鼠标移动了<br/>' +
            '<a id="nextStep" href="javascript:;">点击继续</a>' +
            '</p>';
        $('#nextStep').click(function () {
            step4();
        });
    };
    var step4 = function () {
        $('#pp-guide')[0].innerHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '右上角有显示张数的作品(多图)<br/>' +
            '直接<span style="color:#127bb1;">点击预览图</span>就能查看下一张图片<br/>' +
            '当然如果不是多图,直接点击预览图没有任何效果<br/>' +
            '<a id="nextStep" href="javascript:;">点击继续</a>' +
            '</p>';
        $('#nextStep').click(function () {
            //step5();
            step6();
        });
    };
    var step5 = function () {
        $(picDiv[0]).css({ 'position': 'absolute', 'z-index': '999998' });
        $(picDiv[1]).css({ 'position': 'absolute', 'z-index': '999998' });
        $(picDiv[2]).css({ 'position': 'absolute', 'z-index': '999998' });
        $(picDiv[3]).css({ 'position': 'absolute', 'z-index': '999998' });
        $('._toolmenu').css({ 'z-index': '999998' });
        $('#pp-guide')[0].innerHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '点击右下角的<span style="color:#127bb1;">向下按钮</span>进入<span style="color:#127bb1;">批量下载模式</span><br/>' +
            '尝试<span style="color:#127bb1;">勾选</span>下方的部分图片,完成后<span style="color:#127bb1;">再次点击</span>该按钮<br/>' +
            '处理完成后将会弹出下载地址<br/>' +
            '<a id="nextStep" href="javascript:;">点击继续</a>' +
            '</p>';
        $('#nextStep').click(function () {
            step6();
        });
    };
    var step6=function (){
        $(picDiv[0]).css({ 'position': '', 'z-index': '' });
        $(picDiv[1]).css({ 'position': '', 'z-index': '' });
        $(picDiv[2]).css({ 'position': '', 'z-index': '' });
        $(picDiv[3]).css({ 'position': '', 'z-index': '' });
        $('._toolmenu').css({ 'z-index': '' });
        $('#pp-guide')[0].innerHTML =
            '<p style="text-align:center;color:white;font-size:25px;">' +
            '预览功能到这里就介绍完毕了<br/>' +
            '排序功能并没有什么可以介绍的<br/>' +
            '接下来将进入到设置页面<br/>' +
            '如果以后需要修改设置,可以点击<span style="color:#127bb1;">右下角的齿轮按钮</span><br/>' +
            '<a id="nextStep" href="javascript:;">点击继续</a>' +
            '</p>';
        $('#nextStep').click(function () {
            $('#pp-guide').remove();
            var settings = {
                'enablePreview': ENABLE_PREVIEW.toString(),
                'previewQuality': PREVIEW_QUALITY.toString(),
                'hideLoading': HIDE_LOADING_IN_NEXTPIC.toString(),
                'enableSort': ENABLE_SORT.toString(),
                'pageCount': GETTING_PAGE_COUNT.toString(),
                'favFilter': FAV_FILTER.toString(),
                'linkBlank': IS_LINK_BLANK.toString(),
                'hideFavorite': HIDE_FAVORITE.toString()
            };
            showSetting(settings);
        });
    }
    var itv = setInterval(function () {
        if (SORT_END) {
            $('#pp-guide').children().remove();
            step1();
            clearInterval(itv);
        }
    }, 500);
}
/**
 * ---------------------------------------- 以下为 主函数 部分 ----------------------------------------
 */
$(document).ready(function (){
    // 作品详情页不操作,由animePreview()处理
    if(location.href.indexOf('member_illust.php?mode') != -1) {
        return;
    }

    $('.popular-introduction').remove();
    $('.ads_area_no_margin').remove();
    $('.multi-ads-area').remove();
    $('.ad-footer').remove();
    $('._premium-lead-tag-search-bar, _premium-lead-promotion-banner').remove();
    $('.clickable-area').remove();

    // 设置按钮
    addSettingButton();
    // 读取设置
    var settings = getSettings();
    if (!settings) {
        var screenWidth = document.documentElement.clientWidth;
        var screenHeight = document.documentElement.clientHeight;
        settings = {
            'enablePreview': ENABLE_PREVIEW.toString(),
            'previewQuality': PREVIEW_QUALITY.toString(),
            'hideLoading': HIDE_LOADING_IN_NEXTPIC.toString(),
            'enableSort': ENABLE_SORT.toString(),
            'pageCount': GETTING_PAGE_COUNT.toString(),
            'favFilter': FAV_FILTER.toString(),
            'linkBlank': IS_LINK_BLANK.toString(),
            'hideFavorite': HIDE_FAVORITE.toString()
        };
        // 首次使用
        var guide = document.createElement('div');
        guide.id = 'pp-guide';
        document.body.appendChild(guide);
        guide.innerHTML = '<p style="text-align:center;color:white;font-size:50px;">您是第一次使用<br/>是否愿意花费30秒<br/>阅读帮助及进行相关设置?<br/></p>';
        $(guide).children().css('margin-top', parseInt(screenHeight) / 10 + 'px');
        // 按钮
        var button = document.createElement('li');
        $(button).addClass('_order-item _clickable');
        $(button).css('color', 'white');
        $(guide).find('p')[0].appendChild(button);
        $(guide).find('p')[0].appendChild(button.cloneNode(false));
        $(guide).find('p')[0].appendChild(button.cloneNode(false));
        // 三个按钮
        var li = $(guide).find('li');
        li[0].innerText = '是,阅读帮助并配置'; $(li[0]).attr('bgc', '#127bb1');
        li[1].innerText = '是,但仅进行配置'; $(li[1]).attr('bgc', '#12cdcd');
        li[2].innerText = '否,使用默认设置'; $(li[2]).attr('bgc', '#ff7e48');
        li.css({ 'margin-right': '10px', 'margin-top': '80px', 'font-size': '18px', 'width': '180px' });
        li.each(function () {
            $(this).css('background-color', $(this).attr('bgc'));
        });
        li.mouseover(function () {
            $(this).css({ 'background-color': '#127bff' });
        });
        li.mouseout(function () {
            $(this).css({ 'background-color': $(this).attr('bgc') });
        });
        // 按钮的点击事件
        $(li[0]).click(function () { // 是
            // 不在搜索页的时候跳转到搜索页
            if (location.href.indexOf('search.php') == -1) {
                location.href = 'https://www.pixiv.net/search.php?word=miku&pp=guide';
            }
            guideStep();
        });
        $(li[1]).click(function () { // 是,仅设置
            showSetting(settings);
        });
        $(li[2]).click(function () { // 否
            setCookie('pixivPreviewerSetting', JSON.stringify(settings));
            $(guide).remove();
        });

        $(guide).css({
            'width': screenWidth + 'px', 'height': screenHeight + 'px', 'position': 'fixed',
            'z-index': 999999, 'background-color': 'rgba(0,0,0,0.8)',
            'left': '0px', 'top': '0px'
        });

        if (location.href.indexOf('pp=guide') != -1) {
            guideStep();
        }
    }
    else {
        ENABLE_PREVIEW = settings.enablePreview == 'true' ? true : false;
        show_origin = settings.previewQuality == '0' ? false : true;
        HIDE_LOADING_IN_NEXTPIC = settings.hideLoading == 'true' ? true : false;
        ENABLE_SORT = settings.enableSort == 'true' ? true : false;
        GETTING_PAGE_COUNT = parseInt(settings.pageCount);
        FAV_FILTER = parseInt(settings.favFilter);
        IS_LINK_BLANK = settings.linkBlank == 'true' ? true : false;
        HIDE_FAVORITE = settings.hideFavorite == 'true' ? true : false;
    }

    // 设置页面(应该循环去搞)
    if (location.href.indexOf('bookmark_new_illust') != -1) {
        CurrentPage = FollowPage;
    } else if (location.href.indexOf('discovery') != -1) {
        CurrentPage = DiscoveryPage;
    } else if (location.href.indexOf('member') != -1) {
        CurrentPage = MemberPage;
    } else if (location.href == 'https://www.pixiv.net/') {
        CurrentPage = HomePage;
    } else if (location.href.indexOf('ranking') != -1) {
        CurrentPage = RankingPage;
    } else if (location.href.indexOf('new_illust.php') != -1) {
        CurrentPage = NewIllustPage;
    } else if (location.href.indexOf('cate_r18.php') != -1) {
        CurrentPage = R18Cate;
    } else if (location.href.indexOf('bookmark.php') != -1) {
        CurrentPage = BookMarkPage;
    } else if (location.href.indexOf('stacc') != -1) {
        CurrentPage = StaccPage;
    }

    var itv;
    // 怎么都得单独处理,好麻烦...
    // 发现页单独处理
    if (CurrentPage == DiscoveryPage) {
        (function discoveryFunc() {
            if (ENABLE_PREVIEW) {
                var itv = setInterval(function(){
                    dataDiv = $(dataDivSelector[CurrentPage]);
                    imgData = []; // 得自己生成imgData
                    if(dataDiv.find('figure').length > 0){
                        clearInterval(itv);
                        picList = dataDiv.children()[0];
                        var pics = $($(picList).children()[1]).children();
                        pics = $($(pics.children()[1]).children()[0]).children();
                        picDiv = []; picHref = [];
                        for (var i = 0; i < pics.length; i++) {
                            if(pics[i].className != pics[0].className){
                                pics[i].remove();
                                pics.splice(i--,1);
                                continue;
                            }
                            picDiv.push(pics[i].childNodes[0].childNodes[0]);
                            $(picDiv[i]).attr('data-index', i);
                            picHref.push(picDiv[i].childNodes[0]);
                            $(picHref[i]).attr('data-index', i);
                            var id = $(picHref[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                            $(picHref[i]).attr('data-id', id);
                            var divs = $(picHref[i]).find('div');
                            var spans = $(picHref[i]).find('span');
                            var illustType = 0, pageCount = 1;
                            if (divs.length == 2 && spans.length != 0) {
                                illustType = 1;
                                pageCount = parseInt(spans[1].innerText);
                            }
                            else if (divs.length == 1){
                                illustType = 0;
                            }
                            else {
                                illustType = 2;
                            }
                            imgData.push({'illustType': illustType, 'pageCount': pageCount});
                        }
                        pixivPreviewer();

                        // 标记
                        pics.addClass('processed');

                        // 持续检测是否有新的作品
                        var itvTick;
                        itvTick = setInterval(function(){
                            var dataDivTemp, imgDataTemp, picListTemp, picsTemp, picDivTemp, picHrefTemp;

                            dataDivTemp = $(dataDivSelector[CurrentPage]);
                            imgDataTemp = [];
                            if(dataDivTemp.find('figure').length > 0){
                                picListTemp = dataDivTemp.children()[0];
                                picsTemp = $($(picListTemp).children()[1]).children();
                                picsTemp = $($(picsTemp.children()[1]).children()[0]).children();

                                // 检查
                                if (picsTemp.last().hasClass('processed'))
                                    return;

                                //clearInterval(itvTick);
                                // 找到最后一个处理过的
                                var i;
                                i = picsTemp.length - 1;
                                for(; i >= 0 && !$(picsTemp[i]).hasClass('processed'); i--);
                                // i==-1说明全都没有处理过

                                picDivTemp = []; picHrefTemp = [];
                                // i+1是第一个没有处理过的
                                var newZero = i + 1;
                                // 复制已经处理过的内容
                                picDivTemp = picDiv;
                                picHrefTemp = picHref;
                                imgDataTemp = imgData;
                                for (i = i + 1; i < picsTemp.length; i++) {
                                    if(picsTemp[i].className != picsTemp[newZero].className){
                                        picsTemp[i].remove();
                                        picsTemp.splice(i--,1);
                                        continue;
                                    }
                                    picDivTemp.push(picsTemp[i].childNodes[0].childNodes[0]);
                                    $(picDivTemp[i]).attr('data-index', i);
                                    picHrefTemp.push(picDivTemp[i].childNodes[0]);
                                    $(picHrefTemp[i]).attr('data-index', i);
                                    var id = $(picHrefTemp[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                                    $(picHrefTemp[i]).attr('data-id', id);
                                    var divs = $(picHrefTemp[i]).find('div');
                                    var spans = $(picHrefTemp[i]).find('span');
                                    var illustType = 0, pageCount = 1;
                                    if (divs.length == 2 && spans.length != 0) {
                                        illustType = 1;
                                        pageCount = parseInt(spans[1].innerText);
                                    }
                                    else if (divs.length == 1){
                                        illustType = 0;
                                    }
                                    else {
                                        illustType = 2;
                                    }
                                    imgDataTemp.push({'illustType': illustType, 'pageCount': pageCount});
                                }
                                // 更新信息
                                picsTemp.addClass('processed');
                                picDiv = picDivTemp;
                                picHref = picHrefTemp;
                                imgData = imgDataTemp;

                                pixivPreviewer();
                            }
                        }, 2000);
                    }
                }, 500);
            }
        })();
        return;
    }
    // 作品页单独处理
    else if (CurrentPage == MemberPage) {
        if (ENABLE_PREVIEW) {
            //console.log($('li'));
            itv = setInterval(function(){
                dataDiv = $('.xq6AsQu');
                imgData = [];

                if(dataDiv.children().length > 0){
                    clearInterval(itv);
                    picList = dataDiv;
                    var pics = $(picList).children();
                    picDiv = []; picHref = [];
                    for (var i = 0; i < pics.length; i++) {
                        picDiv.push(pics[i]);
                        $(picDiv[i]).attr('data-index', i);
                        picHref.push($(pics[i]).find('a')[0]);
                        $(picHref[i]).attr('data-index', i);
                        var id = $(picHref[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                        $(picHref[i]).attr('data-id', id);
                        var illustType = 0, pageCount = 1;
                        if ($(picHref[i]).hasClass('ugoku-illust')){
                            illustType = 2;
                        }
                        else if ($(picHref[i]).find('.page-count').length > 0) {
                            illustType = 1;
                            pageCount = $(picHref[i]).find('.page-count').find('span')[0].innerText;
                        }
                        imgData.push({'illustType': illustType, 'pageCount': pageCount});
                    }
                    pixivPreviewer();
                }
            }, 500);
        }
    }
    else if (CurrentPage == MemberPage || CurrentPage == NewIllustPage || CurrentPage == BookMarkPage) {
        if (ENABLE_PREVIEW) {
            itv = setInterval(function(){
                dataDiv = $('._image-items').parent();
                imgData = []; // 得自己生成imgData
                if(dataDiv.find('._layout-thumbnail').length > 0){
                    clearInterval(itv);
                    picList = $('._image-items')[0];
                    var pics = $(picList).children();
                    picDiv = []; picHref = [];
                    for (var i = 0; i < pics.length; i++) {
                        picDiv.push(pics[i]);
                        $(picDiv[i]).attr('data-index', i);
                        picHref.push($(pics[i]).find('._work')[0]);
                        $(picHref[i]).attr('data-index', i);
                        var id = $(picHref[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                        $(picHref[i]).attr('data-id', id);
                        var illustType = 0, pageCount = 1;
                        if ($(picHref[i]).hasClass('ugoku-illust')){
                            illustType = 2;
                        }
                        else if ($(picHref[i]).find('.page-count').length > 0) {
                            illustType = 1;
                            pageCount = $(picHref[i]).find('.page-count').find('span')[0].innerText;
                        }
                        imgData.push({'illustType': illustType, 'pageCount': pageCount});
                    }
                    pixivPreviewer();
                }
            }, 500);
        }
        return;
    }
    // 主页单独处理
    else if (CurrentPage == HomePage || CurrentPage == R18Cate) {
        if (ENABLE_PREVIEW) {
            itv = setInterval(function(){
                dataDiv = $('._image-items').parent();
                imgData = []; // 得自己生成imgData
                if(dataDiv.find('._layout-thumbnail').length > 0){
                    clearInterval(itv);
                    picList = dataDiv.find('._image-items');
                    var pics = $(picList).children();
                    picDiv = []; picHref = [];
                    for (var i = 0; i < pics.length; i++) {
                        picDiv.push(pics[i]);
                        $(picDiv[i]).attr('data-index', i);
                        picHref.push($(pics[i]).find('._work')[0]);
                        $(picHref[i]).attr('data-index', i);
                        var id;
                        // BOOTH最新动态这种没有预览的意义
                        try {
                            id = $(picHref[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0]
                        } catch (e) {
                            picDiv.pop();
                            picHref.pop();
                            continue;
                        }
                        $(picHref[i]).attr('data-id', id);
                        var illustType = 0, pageCount = 1;
                        if ($(picHref[i]).hasClass('ugoku-illust')) {
                            illustType = 2;
                        }
                        else if ($(picHref[i]).find('.page-count').length > 0) {
                            illustType = 1;
                            pageCount = $(picHref[i]).find('.page-count').find('span')[0].innerText;
                        }
                        imgData.push({'illustType': illustType, 'pageCount': pageCount});
                    }
                    pixivPreviewer();
                }
            }, 500);
        }
        return;
    }
    // 排行榜单独处理
    else if (CurrentPage == RankingPage) {
        if (ENABLE_PREVIEW) {
            itv = setInterval(function(){
                dataDiv = $(dataDivSelector[CurrentPage]);
                imgData = []; // 得自己生成imgData
                if(dataDiv.find('.ranking-item').length > 0){
                    clearInterval(itv);
                    picList = dataDiv.children()[0];
                    var pics = $(picList).children();
                    picDiv = []; picHref = [];
                    for (var i = 0; i < pics.length; i++) {
                        picDiv.push($(pics[i]).find('.ranking-image-item'));
                        $(picDiv[i]).attr('data-index', i);
                        picHref.push($(pics[i]).find('._work')[0]);
                        $(picHref[i]).attr('data-index', i);
                        var id = $(picHref[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                        $(picHref[i]).attr('data-id', id);
                        var illustType = 0, pageCount = 1;
                        if ($(picHref[i]).hasClass('ugoku-illust')) {
                            illustType = 2;
                        }
                        else if ($(picHref[i]).find('.page-count').length > 0) {
                            illustType = 1;
                            pageCount = $(picHref[i]).find('.page-count').find('span')[0].innerText;
                        }
                        imgData.push({'illustType': illustType, 'pageCount': pageCount});
                    }
                    pixivPreviewer();

                    // 标记
                    pics.addClass('processed');

                    // CV 就 CV 吧,估计不会有重构的机会了,能用就先用着...
                    // 持续检测是否有新的作品
                    var itvTick;
                    itvTick = setInterval(function(){
                        var dataDivTemp, imgDataTemp, picListTemp, picsTemp, picDivTemp, picHrefTemp;

                        dataDivTemp = $(dataDivSelector[CurrentPage]);
                        imgDataTemp = [];
                        if(dataDivTemp.find('.ranking-item').length > 0){
                            picListTemp = dataDivTemp.children()[0];
                            picsTemp = $(picListTemp).children();

                            // 检查
                            if (picsTemp.last().hasClass('processed'))
                                return;

                            //clearInterval(itvTick);
                            // 找到最后一个处理过的
                            var i;
                            i = picsTemp.length - 1;
                            for(; i >= 0 && !$(picsTemp[i]).hasClass('processed'); i--);
                            // i==-1说明全都没有处理过

                            picDivTemp = []; picHrefTemp = [];
                            // i+1是第一个没有处理过的
                            var newZero = i + 1;
                            // 复制已经处理过的内容
                            picDivTemp = picDiv;
                            picHrefTemp = picHref;
                            imgDataTemp = imgData;
                            for (i = i + 1; i < picsTemp.length; i++) {
                                if(picsTemp[i].className != picsTemp[newZero].className){
                                    picsTemp[i].remove();
                                    picsTemp.splice(i--,1);
                                    continue;
                                }
                                picDivTemp.push($(picsTemp[i]).find('.ranking-image-item'));
                                $(picDivTemp[i]).attr('data-index', i);
                                picHrefTemp.push($(picsTemp[i]).find('._work')[0]);
                                $(picHrefTemp[i]).attr('data-index', i);
                                var id = $(picHrefTemp[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                                $(picHrefTemp[i]).attr('data-id', id);
                                var illustType = 0, pageCount = 1;
                                if ($(picHrefTemp[i]).hasClass('ugoku-illust')) {
                                    illustType = 2;
                                }
                                else if ($(picHrefTemp[i]).find('.page-count').length > 0) {
                                    illustType = 1;
                                    pageCount = $(picHrefTemp[i]).find('.page-count').find('span')[0].innerText;
                                }
                                imgDataTemp.push({'illustType': illustType, 'pageCount': pageCount});
                            }
                            // 更新信息
                            picsTemp.addClass('processed');
                            picDiv = picDivTemp;
                            picHref = picHrefTemp;
                            imgData = imgDataTemp;

                            pixivPreviewer();
                        }
                    }, 2000);
                }
            }, 500);
        }
        return;
    }
    // 动态
    else if (CurrentPage == StaccPage) {
        if (ENABLE_PREVIEW) {
            itv = setInterval(function(){
                if($('.stacc_ref_illust_img, .stacc_ref_user_illust_img').find('._layout-thumbnail').last().hasClass('processed')) {
                    return;
                }

                dataDiv = $('#stacc_timeline');
                imgData = []; // 得自己生成imgData

                picList = $('.stacc_ref_illust_img, .stacc_ref_user_illust_img');
                var pics = picList.find('._layout-thumbnail');
                picDiv = []; picHref = [];
                for (var i = 0; i < pics.length; i++) {
                    picDiv.push(pics[i]);
                    $(picDiv[i]).attr('data-index', i);
                    picHref.push($(pics[i]).parent().get(0));
                    $(picHref[i]).attr('data-index', i);
                    var id = $(picHref[i]).attr('href').split('illust_id')[1].split('=')[1].split('&')[0];
                    $(picHref[i]).attr('data-id', id);
                    var illustType = 0, pageCount = 1;
                    if ($(picHref[i]).hasClass('ugoku-illust')){
                        illustType = 2;
                    }
                    else if ($(picHref[i]).find('.page-count').length > 0) {
                        illustType = 1;
                        pageCount = $(picHref[i]).find('.page-count').find('span')[0].innerText;
                    }
                    imgData.push({'illustType': illustType, 'pageCount': pageCount});
                }
                // 标记
                pics.addClass('processed');

                pixivPreviewer();

            }, 1000);
        }
        return;
    }

    // 预览,下载
    itv = setInterval(function () {
        try {
            getImageElements();
        }
        catch (e) {
            console.log(e);
            return;
        }
        try {
            // 排序
            if (picDiv.length > 0) {
                clearInterval(itv);
                if (ENABLE_SORT && ENABLE_PREVIEW) {
                    pixiv_sk(pixivPreviewer); // 排序完成后调用预览
                }
                else if (ENABLE_SORT) {
                    pixiv_sk(); // 仅排序
                }
                else if (ENABLE_PREVIEW) {
                    pixivPreviewer();
                }
            }
        }
        catch (e) {
            console.log(e);
            alert('出现错误!');
            clearInterval(itv);
        }
    }, 500);
});