MediaWiki:Common.js

Pokewiz讨论 | 贡献2024年9月24日 (二) 07:51的版本

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
// 添加新按钮
function addToggleButton() {
    const navbarNav = document.querySelector('ul.nav.navbar-nav');
    if (!navbarNav) {
        console.error('未找到 ul.nav.navbar-nav 元素');
        return null;
    }
    const newButton = document.createElement('li');
    newButton.className = 'dropdown nav-item';
    newButton.innerHTML = `
        <a class="nav-link" role="button" title="切换版本" href="#" id="toggleButton">
            <span class="fa fa-exchange"></span>
            <span class="hide-title">切换版本</span>
        </a>
    `;
    navbarNav.appendChild(newButton);
    console.log('新按钮已添加到导航栏');
    return document.getElementById('toggleButton');
}

// 切换显示/隐藏类
function toggleClasses(showHOTA) {
    const hotaElements = document.querySelectorAll('.onlyhota');
    const sodElements = document.querySelectorAll('.onlysod');
    
    hotaElements.forEach(el => el.style.display = showHOTA ? '' : 'none');
    sodElements.forEach(el => el.style.display = showHOTA ? 'none' : '');
}

// 设置Cookie
function setCookie(name, value, days) {
    const expires = new Date(Date.now() + days * 864e5).toUTCString();
    document.cookie = name + '=' + encodeURIComponent(value) + '; expires=' + expires + '; path=/';
}

// 获取Cookie
function getCookie(name) {
    return document.cookie.split('; ').reduce((r, v) => {
        const parts = v.split('=');
        return parts[0] === name ? decodeURIComponent(parts[1]) : r;
    }, '');
}

// 主函数
function initToggleButton() {
    const button = addToggleButton();
    let isHOTA = getCookie('isHOTA') !== 'false';

    function updateButtonText() {
        button.querySelector('.hide-title').textContent = isHOTA ? '切换至死亡阴影' : '切换至深渊号角';
    }

    function toggleVersion() {
        isHOTA = !isHOTA;
        toggleClasses(isHOTA);
        updateButtonText();
        setCookie('isHOTA', isHOTA, 30);
    }

    button.addEventListener('click', (e) => {
        e.preventDefault();
        toggleVersion();
    });

    // 初始化
    toggleClasses(isHOTA);
    updateButtonText();
}

// 当DOM加载完成后执行初始化
document.addEventListener('DOMContentLoaded', initToggleButton);