跳转到内容

MediaWiki:Common.js

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

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

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

})()