跳转到内容

MediaWiki:Common.js:修订间差异

来自洽隐山房
无编辑摘要
无编辑摘要
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
(function () {
(function () {
     if (!window.SLOADED) {
     if (window.SLOADED) {
         window.SLOADED = {}
         window.SLOADED = {};
         window.RELOAD = true;
         window.RELOAD = true;
     } else {
     } else {
第24行: 第25行:
     }
     }
     function hack_mw(mw) {
     function hack_mw(mw) {
         mw.loader.registerOne = function (module, version, dependencies, group, source, skip) {
        var registry = mw.loader.moduleRegistry;
         mw.loader.registerOne = function (
            module,
            version,
            dependencies,
            group,
            source,
            skip,
        ) {
             registry[module] = {
             registry[module] = {
                 // Exposed to execute() for mw.loader.impl() closures.
                 // Exposed to execute() for mw.loader.impl() closures.
                 // Import happens via require().
                 // Import happens via require().
                 module: {
                 module: {
                     exports: {}
                     exports: {},
                 },
                 },
                 // module.export objects for each package file inside this module
                 // module.export objects for each package file inside this module
                 packageExports: {},
                 packageExports: {},
                 version: version || '',
                 version: version || "",
                 dependencies: dependencies || [],
                 dependencies: dependencies || [],
                 group: typeof group === 'undefined' ? null : group,
                 group: typeof group === "undefined" ? null : group,
                 source: typeof source === 'string' ? source : 'local',
                 source: typeof source === "string" ? source : "local",
                 state: 'registered',
                 state: "registered",
                 skip: typeof skip === 'string' ? skip : null
                 skip: typeof skip === "string" ? skip : null,
             };
             };
         };
         };
        function splitModuleKey(key) {
            var index = key.lastIndexOf('@');
            if (index === -1 || index === 0) {
                return {
                    name: key,
                    version: ''
                };
            }
            return {
                name: key.slice(0, index),
                version: key.slice(index + 1)
            };
        }
        function setAndPropagate(module, state) {
            registry[module].state = state;
            if (state === 'ready') {
                store.add(module);
            } else if (state === 'error' || state === 'missing') {
                errorModules.push(module);
            } else if (state !== 'loaded') {
                return;
            }
            if (willPropagate) {
                return;
            }
            willPropagate = true;
            mw.requestIdleCallback(doPropagation, {
                timeout: 1
            });
        }
         mw.loader.impl = function (declarator) {
         mw.loader.impl = function (declarator) {
             var data = declarator(),
             var data = declarator(),
第70行: 第109行:
             registry[name].deprecationWarning = deprecationWarning;
             registry[name].deprecationWarning = deprecationWarning;
             // The module may already have been marked as erroneous
             // The module may already have been marked as erroneous
             if (registry[name].state !== 'error' && registry[name].state !== 'missing') {
             if (
                 setAndPropagate(name, 'loaded');
                registry[name].state !== "error" &&
                registry[name].state !== "missing"
            ) {
                 setAndPropagate(name, "loaded");
             }
             }
         };
         };
         mw.loader.implement = function (module, script, style, messages, templates, deprecationWarning) {
         mw.loader.implement = function (
            module,
            script,
            style,
            messages,
            templates,
            deprecationWarning,
        ) {
             var split = splitModuleKey(module),
             var split = splitModuleKey(module),
                 name = split.name,
                 name = split.name,
第91行: 第140行:
             registry[name].deprecationWarning = deprecationWarning;
             registry[name].deprecationWarning = deprecationWarning;
             // The module may already have been marked as erroneous
             // The module may already have been marked as erroneous
             if (registry[name].state !== 'error' && registry[name].state !== 'missing') {
             if (
                 setAndPropagate(name, 'loaded');
                registry[name].state !== "error" &&
                registry[name].state !== "missing"
            ) {
                 setAndPropagate(name, "loaded");
             }
             }
         }
         };
         document.querySelector('script[async][src*="startup"]').dataset.turbo_temporary = "turbo_twmporary";
         document.querySelector(
            'script[async][src*="startup"]',
        ).dataset.turbo_temporary = "turbo_twmporary";
     }
     }
     // library functions
     // library functions
     function loadScript(url, options = {}, dataset = {}) {
     function loadScript(url, options = {}, dataset = {}) {
         return new Promise((resolve, reject) => {
         return new Promise((resolve, reject) => {
             if (window.SLOADED[url]) resolve()
             if (window.SLOADED[url]) resolve();
             const script = document.createElement('script');
             const script = document.createElement("script");
             script.src = url;
             script.src = url;
             script.async = "async";
             script.async = "async";
             Object.assign(script, options);
             Object.assign(script, options);
             Object.assign(script.dataset, dataset);
             Object.assign(script.dataset, dataset);
             script.onload = () => { window.SLOADED[url] = true; resolve() };
             script.onload = () => {
             script.onerror = (e) => reject(e)
                window.SLOADED[url] = true;
                resolve();
            };
             script.onerror = (e) => reject(e);
             document.head.appendChild(script);
             document.head.appendChild(script);
         });
         });
     }
     }
     hack_mw(mw);
     hack_mw(mw);
     loadScript("https://cdnjs.cloudflare.com/ajax/libs/parallax/3.1.0/parallax.min.js").then(function () {
     loadScript(
        "https://cdnjs.cloudflare.com/ajax/libs/parallax/3.1.0/parallax.min.js",
    ).then(function () {
         inject_parallax(document);
         inject_parallax(document);
         new Parallax(scene);
         new Parallax(scene);
     });
     });
     loadScript("https://cdn.jsdelivr.net/npm/@hotwired/turbo@latest/dist/turbo.es2017-esm.min.js", { type: "module" });
     loadScript(
 
        "https://cdn.jsdelivr.net/npm/@hotwired/turbo@latest/dist/turbo.es2017-esm.min.js",
})()
        { type: "module" },
    );
})();

2026年8月20日 (四) 17:13的版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */

(function () {
    if (window.SLOADED) {
        window.SLOADED = {};
        window.RELOAD = true;
    } else {
        window.RELOAD = false;
    }

    let scene;
    function inject_parallax(document) {
        scene = document.createElement("div");
        document.body.appendChild(scene);
        scene.id = "scene";
        scene.dataset.turboPermanent = "true";
        scene.style.zIndex = -100;
        scene.style.position = "fixed";
        scene.id = "parallax-bg";
        scene.style.inset = "-300px";
        var img = document.createElement("img");
        scene.appendChild(img);
        img.src = "/_nuxt/bg-1.DbZGBWF5.jpg";
        img.dataset.depth = 0.5;
    }
    function hack_mw(mw) {
        var registry = mw.loader.moduleRegistry;
        mw.loader.registerOne = function (
            module,
            version,
            dependencies,
            group,
            source,
            skip,
        ) {
            registry[module] = {
                // Exposed to execute() for mw.loader.impl() closures.
                // Import happens via require().
                module: {
                    exports: {},
                },
                // module.export objects for each package file inside this module
                packageExports: {},
                version: version || "",
                dependencies: dependencies || [],
                group: typeof group === "undefined" ? null : group,
                source: typeof source === "string" ? source : "local",
                state: "registered",
                skip: typeof skip === "string" ? skip : null,
            };
        };
        function splitModuleKey(key) {
            var index = key.lastIndexOf('@');
            if (index === -1 || index === 0) {
                return {
                    name: key,
                    version: ''
                };
            }
            return {
                name: key.slice(0, index),
                version: key.slice(index + 1)
            };
        }
        function setAndPropagate(module, state) {
            registry[module].state = state;
            if (state === 'ready') {
                store.add(module);
            } else if (state === 'error' || state === 'missing') {
                errorModules.push(module);
            } else if (state !== 'loaded') {
                return;
            }
            if (willPropagate) {
                return;
            }
            willPropagate = true;
            mw.requestIdleCallback(doPropagation, {
                timeout: 1
            });
        }
        mw.loader.impl = function (declarator) {
            var data = declarator(),
                module = data[0],
                script = data[1] || null,
                style = data[2] || null,
                messages = data[3] || null,
                templates = data[4] || null,
                deprecationWarning = data[5] || null,
                split = splitModuleKey(module),
                name = split.name,
                version = split.version;

            // Automatically register module
            if (!(name in registry)) {
                mw.loader.register(name);
            }
            // Without this reset, if there is a version mismatch between the
            // requested and received module version, then mw.loader.store would
            // cache the response under the requested key. Thus poisoning the cache
            // indefinitely with a stale value. (T117587)
            registry[name].version = version;
            // Attach components
            registry[name].declarator = declarator;
            registry[name].script = script;
            registry[name].style = style;
            registry[name].messages = messages;
            registry[name].templates = templates;
            registry[name].deprecationWarning = deprecationWarning;
            // The module may already have been marked as erroneous
            if (
                registry[name].state !== "error" &&
                registry[name].state !== "missing"
            ) {
                setAndPropagate(name, "loaded");
            }
        };
        mw.loader.implement = function (
            module,
            script,
            style,
            messages,
            templates,
            deprecationWarning,
        ) {
            var split = splitModuleKey(module),
                name = split.name,
                version = split.version;

            // Automatically register module
            if (!(name in registry)) {
                mw.loader.register(name);
            }
            registry[name].version = version;
            registry[name].declarator = null; // not supported
            registry[name].script = script;
            registry[name].style = style;
            registry[name].messages = messages;
            registry[name].templates = templates;
            registry[name].deprecationWarning = deprecationWarning;
            // The module may already have been marked as erroneous
            if (
                registry[name].state !== "error" &&
                registry[name].state !== "missing"
            ) {
                setAndPropagate(name, "loaded");
            }
        };
        document.querySelector(
            'script[async][src*="startup"]',
        ).dataset.turbo_temporary = "turbo_twmporary";
    }
    // library functions
    function loadScript(url, options = {}, dataset = {}) {
        return new Promise((resolve, reject) => {
            if (window.SLOADED[url]) resolve();
            const script = document.createElement("script");
            script.src = url;
            script.async = "async";
            Object.assign(script, options);
            Object.assign(script.dataset, dataset);
            script.onload = () => {
                window.SLOADED[url] = true;
                resolve();
            };
            script.onerror = (e) => reject(e);
            document.head.appendChild(script);
        });
    }
    hack_mw(mw);
    loadScript(
        "https://cdnjs.cloudflare.com/ajax/libs/parallax/3.1.0/parallax.min.js",
    ).then(function () {
        inject_parallax(document);
        new Parallax(scene);
    });
    loadScript(
        "https://cdn.jsdelivr.net/npm/@hotwired/turbo@latest/dist/turbo.es2017-esm.min.js",
        { type: "module" },
    );
})();