MediaWiki:KuranokaPageTransition.js
MediaWiki界面页面
更多操作
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* ================================================================
KURANOKA / KURONATA — PAGE TRANSITION 1.0
Paste this file to MediaWiki:PageTransition.js.
Loaded by MediaWiki:Citizen.js (see installation guide).
================================================================ */
(function () {
'use strict';
if (window.__kkptLoaded) return;
window.__kkptLoaded = true;
if (!window.mw || !mw.config) return;
if (mw.config.get('wgNamespaceNumber') !== 0) return;
if (mw.config.get('wgAction') !== 'view') return;
var page = mw.config.get('wgPageName');
if (page !== 'Kuranoka' && page !== 'Kuronata') return;
var isKuranoka = page === 'Kuranoka';
var target = isKuranoka ? 'Kuronata' : 'Kuranoka';
var targetUrl = '/wiki/' + encodeURIComponent(target);
function mount() {
if (!document.body || document.getElementById('kkpt-toggle')) return;
var link = document.createElement('a');
link.id = 'kkpt-toggle';
link.href = targetUrl;
link.setAttribute('aria-label', isKuranoka
? '切换至 Kuronata:焚毁世界'
: '切换至 Kuranoka:重返天空');
link.setAttribute('title', isKuranoka
? '让这个世界燃烧 · KURONATA'
: '穿越终焉,重返天空 · KURANOKA');
var mark = document.createElement('span');
mark.className = 'kkpt-mark';
mark.setAttribute('aria-hidden', 'true');
mark.textContent = isKuranoka ? '✦' : '☀';
var copy = document.createElement('span');
copy.className = 'kkpt-copy';
var title = document.createElement('span');
title.className = 'kkpt-title';
title.textContent = isKuranoka ? 'KURONATA' : 'KURANOKA';
var subtitle = document.createElement('span');
subtitle.className = 'kkpt-subtitle';
subtitle.textContent = isKuranoka
? 'BURN THE WORLD / 世界を燃やせ'
: 'RETURN TO THE SKY / 空へ帰ろう';
copy.appendChild(title);
copy.appendChild(subtitle);
link.appendChild(mark);
link.appendChild(copy);
// Browser prefetch is a hint, never required for navigation.
var prefetchStarted = false;
function prefetch() {
if (prefetchStarted || !document.head) return;
prefetchStarted = true;
var hint = document.createElement('link');
hint.rel = 'prefetch';
hint.href = targetUrl;
document.head.appendChild(hint);
}
link.addEventListener('pointerenter', prefetch, { once: true });
link.addEventListener('focus', prefetch, { once: true });
// Let the real anchor navigate. This is critical: native cross-
// document View Transitions require a genuine same-origin navigation.
// Ctrl-click / middle-click will still open a normal new tab.
document.body.appendChild(link);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', mount, { once: true });
} else {
mount();
}
}());