Greasy Fork

Greasy Fork is available in English.

知乎加载原图

强制知乎加载原图,便于剪藏或保存网页

当前为 2020-08-17 提交的版本,查看 最新版本

// ==UserScript==
// @name         知乎加载原图
// @namespace    http://greasyfork.icu/
// @version      0.1
// @description  强制知乎加载原图,便于剪藏或保存网页
// @author       JMRY
// @match        https://*.zhihu.com/*
// @grant        none
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js
// ==/UserScript==

let imgOriginSwitch=false;
let imgOriginInterval=null;
function loadOriginImg(){
    let imgElements=$(`img`);

    function applyImgOrigin(){
        for(let i=0; i<imgElements.length; i++){
            let curImgEl=imgElements.eq(i);
            //去除懒加载的class和attribute
            curImgEl.removeClass(`lazy`);
            curImgEl.attr(`data-lazy-status`,`ok`);

            let originImgUrl=curImgEl.attr(`data-original`);
            let curImgUrl=curImgEl.attr(`data-actualsrc`);

            curImgEl.attr(`data-current`,curImgUrl);
            curImgEl.attr(`src`,originImgUrl);
            $(`#originBu`).addClass(`button-origin-pic-changed`);
        }
    }

    function restoreImgOrigin(){
        for(let i=0; i<imgElements.length; i++){
            let curImgEl=imgElements.eq(i);
            let curImgUrl=curImgEl.attr(`data-current`);
            curImgEl.attr(`src`,curImgUrl);
            $(`#originBu`).removeClass(`button-origin-pic-changed`);
        }
    }

    if(!imgOriginSwitch){
        applyImgOrigin();
        //由于知乎懒加载的问题,会导致滚动时图片自动还原,因此每秒修正一次
        imgOriginInterval=setInterval(()=>{
            applyImgOrigin();
        },1000);
        imgOriginSwitch=true;
    }else{
        restoreImgOrigin();
        clearInterval(imgOriginInterval);
        imgOriginSwitch=false;
    }
}

(function() {
    $(`head`).append(`
    <style>
        .button-origin-pic{
            position:fixed;
            left:16px;
            bottom:32px;
            min-width:0px;
            padding:0px;
            width:72px !important;
            height:32px;
            z-index:999999;
        }
        .button-origin-pic-changed{
            background-color: #228822 !important;
            border-color: #228822 !important;
        }
    </style>`);
    $(`body`).append(`<button id="originBu" class="Button FollowButton Button--primary Button--blue button-origin-pic">加载原图</button>`);
    $(`#originBu`).bind(`click`,()=>{
        loadOriginImg();
    });
})();