Greasy Fork is available in English.

No Lazy Image load

取消图片的延迟加载

// ==UserScript==
// @name         No Lazy Image load
// @namespace    https://github.com/ywzhaiqi/
// @version      1.1
// @description  取消图片的延迟加载
// @include      http*
// @grant        none
// ==/UserScript==

var lazyAttributes = [
    "zoomfile", "file", "original", "load-src", "_src", "imgsrc", "real_src", "src2", "origin-src",
    "data-lazyload", "data-lazyload-src", "data-lazy-load-src",
    "data-ks-lazyload", "data-ks-lazyload-custom",
    "data-src", "data-defer-src", "data-actualsrc",
    "data-cover", "data-original", "data-thumb", "data-imageurl",  "data-placeholder",
];

// 转为 Object
var lazyAttributesMap = {};
lazyAttributes.forEach(function(name){
    lazyAttributesMap[name] = true;
});

function noLazyNode(node) {
    any(node.attributes, function(attr) {
        if (attr.name in lazyAttributesMap) {
            var newSrc = attr.value;
            if (node.src != newSrc) {
                // console.log('%s 被替换为 %s', node.src, newSrc);
                node.src = newSrc;
            }
            return true;
        }
    });
}

function any(c, fn) {
    if (c.some) {
        return c.some(fn);
    }
    if (typeof c.length === 'number') {
        return Array.prototype.some.call(c, fn);
    }
    return Object.keys(c).some(function(k) {
        return fn(c[k], k, c);
    });
}

function map(c, fn) {
    if (c.map) {
        return c.map(fn);
    }
    if (typeof c.length === 'number') {
        return Array.prototype.map.call(c, fn);
    }
    return Object.keys(c).map(function(k) {
        return fn(c[k], k, c);
    });
}

function addMutationObserver(selector, callback) {
    var watch = document.querySelector(selector);
    if (!watch) return;

    var observer = new MutationObserver(function(mutations){
        mutations.forEach(function(m) {
            map(m.addedNodes, function(node) {
                if (node.nodeType == Node.ELEMENT_NODE) {
                    callback(node);
                }
            });
        });
    });
    observer.observe(watch, {childList: true, subtree: true});
}

function run() {
    map(document.images, noLazyNode);

    addMutationObserver('body', function(parent) {
        var images = parent.querySelectorAll('img');
        if (images) {
        	map(images, noLazyNode);
        }
    });
}

run();