Bilibili 哔哩哔哩动态查看原图

使新版哔哩哔哩动态可以查看原图以保存图片等

Verzia zo dňa 17.09.2018. Pozri najnovšiu verziu.

// ==UserScript==
// @name         Bilibili 哔哩哔哩动态查看原图
// @icon         https://t.bilibili.com/favicon.ico
// @namespace    https://lolico.moe/
// @version      0.1
// @description  使新版哔哩哔哩动态可以查看原图以保存图片等
// @author       Jindai Kirin
// @match        https://t.bilibili.com/
// @license      GPL-3.0
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var origBtnHtml = '<li class="bp-v-middle orig-btn" data-v-0a8e5084=""><i data-v-0a8e5084="" class="bp-icon-font icon-ss-dynamic bp-v-middle"></i><span data-v-0a8e5084="">查看原图</span></li>';

    function setOrigBtn() {
        $('.imagesbox').each(function (i, ele) {
            //完成标志
            if ($(ele).hasClass('orig-done')) return;
            else $(ele).addClass('orig-done');
            //点击监听事件
            $(ele).click(function () {
                //增加延迟否则DOM未完成渲染
                setTimeout(function () {
                    //按钮栏
                    var bc = $(ele).find('.boost-control');
                    if (bc.find('.orig-btn').length === 0) {
                        $(bc.children()[1]).after(origBtnHtml);
                        bc.find('.orig-btn').click(function () {
                            window.open($(ele).find('.boost-img>img').attr('src').replace(/@.*/, ''));
                        });
                    }
                    //移除按钮
                    function removeBtn() {
                        $(this).parent().find('.orig-btn').remove();
                    }
                    $(bc.children()[0]).click(removeBtn);
                    $(ele).find('.boost-img').click(removeBtn);
                }, 200);
            });
        });
    }

    window.onload = function () {
        var running = false;

        function run() {
            if (running) return;
            running = true;
            setOrigBtn();
            setTimeout(function () {
                running = false;
            }, 2000);
        }

        run();
        window.onscroll = run;
    }
})();