MediaWiki:Common.js:修订间差异

Ztm0929留言 | 贡献
增加延时尝试以确保渲染后再移除
Ztm0929留言 | 贡献
增加 Powered by 图标的切换逻辑
第32行: 第32行:
// logo 切换逻辑
// logo 切换逻辑
$(function () {
$(function () {
     function updateCopyrightIcon() {
     function updateLogos() {
         var $icon = $('#footer-copyrightico img');
         var theme = mw.config.get('skin-theme-clientpref'),
        if ($icon.length === 0) return;
            $ccIcon = $('#footer-copyrightico img'),
            $poweredByIcon = $('#footer-poweredbyico img');


         var htmlClass = document.documentElement.classList;
         if (!$ccIcon.length || !$poweredByIcon.length) return;


         // 默认浅色
         if (theme === 'dark') {
        var src = '/resources/assets/cc-by-nc-sa.svg';
            $ccIcon.attr('src', '/resources/assets/cc-by-nc-sa-dark.svg');
 
            $poweredByIcon.attr('src', '/resources/assets/poweredby-mediawiki-dark.svg');
        if (htmlClass.contains('skin-theme-clientpref-night')) {
        } else if (theme === 'light') {
             src = '/resources/assets/cc-by-nc-sa-dark.svg';
             $ccIcon.attr('src', '/resources/assets/cc-by-nc-sa.svg');
         } else if (htmlClass.contains('skin-theme-clientpref-os')) {
            $poweredByIcon.attr('src', '/resources/assets/poweredby-mediawiki.svg');
             // 自动模式,根据操作系统偏好选择
         } else if (theme === 'os') {
             if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
             // 自动跟随系统
                 src = '/resources/assets/cc-by-nc-sa-dark.svg';
             if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
                 $ccIcon.attr('src', '/resources/assets/cc-by-nc-sa-dark.svg');
                $poweredByIcon.attr('src', '/resources/assets/poweredby-mediawiki-dark.svg');
            } else {
                $ccIcon.attr('src', '/resources/assets/cc-by-nc-sa.svg');
                $poweredByIcon.attr('src', '/resources/assets/poweredby-mediawiki.svg');
             }
             }
         }
         }
    }


        $icon.attr('src', src);
    // 初始化时执行
    }
    updateLogos();


     // 页面加载时执行一次
     // 如果用户切换主题(无需刷新),监听变化
     updateCopyrightIcon();
     mw.hook('user.preferencesSaved').add(updateLogos);


     // 监听深浅模式切换
     // 监听系统颜色方案变化(适配 skin-theme-clientpref-os)
     var observer = new MutationObserver(updateCopyrightIcon);
     window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', updateLogos);
    observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
});
});