跳转到内容
打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

MediaWiki:Common.js:修订间差异

MediaWiki界面页面
Yzystudio留言 | 贡献
创建页面,内容为“这里的任何JavaScript将为所有用户在每次页面加载时加载。:​ <script> // 以下代码应在 MediaWiki:Common.js 中加载 // 为了演示,这里直接嵌入;实际使用时请移至 Common.js (function () { 'use strict'; // 仅在首页执行(检测页面名称) var pageName = mw.config.get('wgPageName') || ''; if (pageName !== '首页' && pageName !== 'Main_Page') { return; } // ---------- 1.…”
 
Yzystudio留言 | 贡献
无编辑摘要
 
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
<script>
(function() {
   // 以下代码应在 MediaWiki:Common.js 中加载
   'use strict';
  // 为了演示,这里直接嵌入;实际使用时请移至 Common.js


   (function () {
   // 移除页面名称限制,确保在首页运行(您也可以保留判断)
    'use strict';
  // var pageName = mw.config && mw.config.get('wgPageName') || '';
  // if (pageName !== '首页' && pageName !== 'Main_Page') return;


    // 仅在首页执行(检测页面名称)
  // ---------- 1. 强制显示欢迎弹窗(重置 localStorage) ----------
    var pageName = mw.config.get('wgPageName') || '';
  // 如果您想永久取消“不再提醒”功能,可以注释掉下面两行
    if (pageName !== '首页' && pageName !== 'Main_Page') {
  // localStorage.removeItem('hpWelcomeNoShow'); // 取消注释可重置
      return;
  // 或者直接让弹窗始终显示(不隐藏)
    }


    // ---------- 1. 欢迎弹窗 ----------
  var welcome = document.getElementById('hpWelcome');
    var popup = document.getElementById('hpWelcomePopup');
  var closeBtn = document.getElementById('hpWelcomeClose');
    var closeBtn = document.getElementById('hpClosePopupBtn');
  var dismissCheck = document.getElementById('hpWelcomeDismiss');
    var dontShowCheck = document.getElementById('hpDontShowAgain');


    if (popup && closeBtn) {
  if (welcome && closeBtn) {
      // 检查 localStorage
    // 确保弹窗可见(移除隐藏类)
      var noShow = localStorage.getItem('hpWikiWelcomeNoShow') === 'true';
    welcome.classList.remove('hidden');
      if (noShow) {
    // 无论之前是否存储,都显示弹窗(如果您想保留记忆功能,可保留以下判断)
        popup.style.display = 'none';
    // var noShow = localStorage.getItem('hpWelcomeNoShow') === 'true';
      }
    // if (noShow) welcome.classList.add('hidden');


      function closePopup() {
    function closeWelcome() {
        popup.style.display = 'none';
      welcome.classList.add('hidden');
        if (dontShowCheck && dontShowCheck.checked) {
      if (dismissCheck && dismissCheck.checked) {
          localStorage.setItem('hpWikiWelcomeNoShow', 'true');
        localStorage.setItem('hpWelcomeNoShow', 'true');
        }
       }
       }
    }
    closeBtn.addEventListener('click', closeWelcome);
  }


       closeBtn.addEventListener('click', closePopup);
  // ---------- 2. 卡片渐显(立即生效) ----------
     }
  var cards = document.querySelectorAll('.hp-card, .hp-card-featured');
  if (cards.length) {
    // 直接给所有卡片添加 visible 类(无动画延迟)
    cards.forEach(function(card) {
       card.classList.add('hp-visible');
     });


     // ---------- 2. 滚动渐显 (Intersection Observer) ----------
     // 如果你仍想保留滚动渐显效果,可以保留 IntersectionObserver,但为了确保可见,我们先全部显示
     var cards = document.querySelectorAll('.hp-card');
    // 以下为备用:如果浏览器支持,且您希望滚动渐显,可以注释掉上面的直接添加,改用下面的观察者
     if ('IntersectionObserver' in window && cards.length) {
     /*
       var observer = new IntersectionObserver(function (entries) {
     if ('IntersectionObserver' in window) {
         entries.forEach(function (entry) {
       var observer = new IntersectionObserver(function(entries) {
         entries.forEach(function(entry) {
           if (entry.isIntersecting) {
           if (entry.isIntersecting) {
             var card = entry.target;
             var card = entry.target;
             var delay = parseInt(card.getAttribute('data-delay')) || 0;
             var delay = parseInt(card.getAttribute('data-delay')) || 0;
             setTimeout(function () {
             setTimeout(function() {
               card.classList.add('hp-visible');
               card.classList.add('hp-visible');
             }, delay);
             }, delay);
第49行: 第55行:
           }
           }
         });
         });
       }, {
       }, { threshold: 0.1 });
        threshold: 0.15,
       cards.forEach(function(card) { observer.observe(card); });
        rootMargin: '0px 0px -30px 0px'
      });
       cards.forEach(function (card) {
        observer.observe(card);
      });
     } else {
     } else {
      // 降级:直接显示所有卡片
       cards.forEach(function(card) { card.classList.add('hp-visible'); });
       cards.forEach(function (card) {
        card.classList.add('hp-visible');
      });
     }
     }
    */
  }


  })();
})();
</script>
```

2026年9月7日 (一) 00:10的最新版本

/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
(function() {
  'use strict';

  // 移除页面名称限制,确保在首页运行(您也可以保留判断)
  // var pageName = mw.config && mw.config.get('wgPageName') || '';
  // if (pageName !== '首页' && pageName !== 'Main_Page') return;

  // ---------- 1. 强制显示欢迎弹窗(重置 localStorage) ----------
  // 如果您想永久取消“不再提醒”功能,可以注释掉下面两行
  // localStorage.removeItem('hpWelcomeNoShow'); // 取消注释可重置
  // 或者直接让弹窗始终显示(不隐藏)

  var welcome = document.getElementById('hpWelcome');
  var closeBtn = document.getElementById('hpWelcomeClose');
  var dismissCheck = document.getElementById('hpWelcomeDismiss');

  if (welcome && closeBtn) {
    // 确保弹窗可见(移除隐藏类)
    welcome.classList.remove('hidden');
    // 无论之前是否存储,都显示弹窗(如果您想保留记忆功能,可保留以下判断)
    // var noShow = localStorage.getItem('hpWelcomeNoShow') === 'true';
    // if (noShow) welcome.classList.add('hidden');

    function closeWelcome() {
      welcome.classList.add('hidden');
      if (dismissCheck && dismissCheck.checked) {
        localStorage.setItem('hpWelcomeNoShow', 'true');
      }
    }
    closeBtn.addEventListener('click', closeWelcome);
  }

  // ---------- 2. 卡片渐显(立即生效) ----------
  var cards = document.querySelectorAll('.hp-card, .hp-card-featured');
  if (cards.length) {
    // 直接给所有卡片添加 visible 类(无动画延迟)
    cards.forEach(function(card) {
      card.classList.add('hp-visible');
    });

    // 如果你仍想保留滚动渐显效果,可以保留 IntersectionObserver,但为了确保可见,我们先全部显示
    // 以下为备用:如果浏览器支持,且您希望滚动渐显,可以注释掉上面的直接添加,改用下面的观察者
    /*
    if ('IntersectionObserver' in window) {
      var observer = new IntersectionObserver(function(entries) {
        entries.forEach(function(entry) {
          if (entry.isIntersecting) {
            var card = entry.target;
            var delay = parseInt(card.getAttribute('data-delay')) || 0;
            setTimeout(function() {
              card.classList.add('hp-visible');
            }, delay);
            observer.unobserve(card);
          }
        });
      }, { threshold: 0.1 });
      cards.forEach(function(card) { observer.observe(card); });
    } else {
      cards.forEach(function(card) { card.classList.add('hp-visible'); });
    }
    */
  }

})();