跳转到内容

MediaWiki:Common.js

来自洽隐山房
Apkqiu​(留言 | 贡献)2026年8月20日 (四) 17:05的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
  • Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* 这里的任何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) {
        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
            };
        };
        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" });

})()