跳转到内容
打开/关闭菜单
  • 450 条目
  • 805 文件
  • 22 用户
  • 9101 编辑
Blockland Wiki
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:KuranokaPageTransition.js

MediaWiki界面页面
KK​(留言 | 贡献)2026年10月23日 (五) 11:23的版本 (创建页面,内容为“→================================================================ 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(…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

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

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