跳转到内容

MediaWiki:Common.js:修订间差异

来自洽隐山房
无编辑摘要
无编辑摘要
第5行: 第5行:
}
}


(function markStartupPermanent() {
(function removeStartup() {
     const scripts = document.querySelectorAll('script[src*="load.php"][src*="modules=startup"]');
     const scripts = document.querySelectorAll('script[src*="load.php"][src*="modules=startup"]');
     if (scripts.length) {
     scripts.forEach(script => script.remove());
        const script = scripts[0];
    console.log('[Turbo] 已删除 startup.js 脚本标签(mw 已全局可用)');
        script.id = 'mw-startup-script';                // 唯一标识
        script.dataset.turboPermanent = 'true';          // 永久保留
        if (script.dataset.turboTrack) {
            delete script.dataset.turboTrack;           // 移除可能存在的 track,避免比较
        }
        console.log('[Turbo] 已标记 startup.js 为永久保留');
    }
})();
})();


// ========== 2. 在每次渲染新页面之前,给新页面的 startup 也打上同样的标记 ==========
// ========== 2. 在 Turbo 渲染新页面之前,删除新页面中的 startup 脚本 ==========
document.addEventListener('turbo:before-render', (event) => {
document.addEventListener('turbo:before-render', (event) => {
     const newDocument = event.detail.newBody.ownerDocument;
     const newDocument = event.detail.newBody.ownerDocument;
     const scripts = newDocument.querySelectorAll('script[src*="load.php"][src*="modules=startup"]');
     const scripts = newDocument.querySelectorAll('script[src*="load.php"][src*="modules=startup"]');
     scripts.forEach(script => {
     scripts.forEach(script => script.remove());
        script.id = 'mw-startup-script';
        script.dataset.turboPermanent = 'true';
        if (script.dataset.turboTrack) {
            delete script.dataset.turboTrack;
        }
    });
});
});



2026年8月20日 (四) 06:50的版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
(function(){
if(!window.SLOADED){
	window.SLOADED = {}
}

(function removeStartup() {
    const scripts = document.querySelectorAll('script[src*="load.php"][src*="modules=startup"]');
    scripts.forEach(script => script.remove());
    console.log('[Turbo] 已删除 startup.js 脚本标签(mw 已全局可用)');
})();

// ========== 2. 在 Turbo 渲染新页面之前,删除新页面中的 startup 脚本 ==========
document.addEventListener('turbo:before-render', (event) => {
    const newDocument = event.detail.newBody.ownerDocument;
    const scripts = newDocument.querySelectorAll('script[src*="load.php"][src*="modules=startup"]');
    scripts.forEach(script => script.remove());
});


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);
    });
}

loadScript("https://cdnjs.cloudflare.com/ajax/libs/parallax/3.1.0/parallax.min.js").then(function(){
	var scene = document.createElement("div");
	document.body.appendChild(scene);
	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;
	new Parallax(scene);
});
	
loadScript("https://cdn.jsdelivr.net/npm/@hotwired/turbo@latest/dist/turbo.es2017-esm.min.js", 
	{
		type: "module"
	}
);

})()