MediaWiki:Common.js:修订间差异

来自Fuckrooms Wiki
(暂时)禁用影响性能的飘落对象,优化后重新加回
添加替代性CSS加载
第1行: 第1行:
/*(function(){
(function() {
    if (!document.getElementById('snow-style')) {
  document.querySelectorAll('.import-css').forEach(el => {
        const style = document.createElement('style');
     const css = el.dataset.content;
        style.id = 'snow-style';
    const hash = el.dataset.styleSha256;
        style.textContent = `
            @keyframes snowFall {
                0% { transform: translateY(-110px) rotate(0deg); }
                100% { transform: translateY(calc(100vh + 130px)) rotate(9000deg); }
            }
            .snowflake {
                position: fixed;
                top: -130px;
                z-index: 9999;
                pointer-events: none;
                user-select: none;
                animation-timing-function: linear;
            }
        `;
        document.head.appendChild(style);
     }
 
   
    function createSnowflake() {
        const snowflake = document.createElement('div');
        snowflake.className = 'snowflake';
        const icons = ['🍀','☘️','🍃','🌿'];
        snowflake.innerHTML = icons[Math.floor(Math.random() * 4)];
        const size = Math.random() * 16 + 8;
        const left = Math.random() * 100;
        const duration = Math.random() * 8 + 8;
        snowflake.style.cssText = `
            font-size: ${size}px;
            left: ${left}%;
            animation: snowFall ${duration}s linear 1;  // 移除delay参数
            opacity: ${Math.random() * 0.5 + 0.5};
            color: hsl(${Math.random() * 360}, 100%, 90%);
        `;
 
     
        snowflake.addEventListener('animationend', function() {
            snowflake.remove();
        });


         document.body.appendChild(snowflake);
    if (css && hash) {
    }
      const calcHash = async (text) =>
         Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(text))))
          .map(b => b.toString(16).padStart(2, '0'))
          .join('');


   
      calcHash(css).then(actualHash => {
    let interval = setInterval(createSnowflake, 250);
        if (actualHash === hash) {
 
          const style = document.createElement('style');
   
          style.textContent = css;
    document.addEventListener('visibilitychange', function() {
          document.head.appendChild(style);
        if (document.hidden) {
          console.log('CSS 应用:', css.substring(0, 20) + '...');
            clearInterval(interval);
         } else {
         } else {
            interval = setInterval(createSnowflake, 250);
          console.error('哈希不匹配', el);
         }
         }
     });
      }).catch(e => console.error('哈希错误:', e));
     } else {
      console.warn('跳过无效元素', el);
    }
  });
})();


   
    for (let i = 0; i < 10; i++) {
        createSnowflake();
    }
})();*/
importScript('MediaWiki:Importjs/'+ wgPageName + '.js');
importScript('MediaWiki:Importjs/'+ wgPageName + '.js');

2025年4月25日 (五) 12:14的版本

(function() {
  document.querySelectorAll('.import-css').forEach(el => {
    const css = el.dataset.content;
    const hash = el.dataset.styleSha256;

    if (css && hash) {
      const calcHash = async (text) =>
        Array.from(new Uint8Array(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(text))))
          .map(b => b.toString(16).padStart(2, '0'))
          .join('');

      calcHash(css).then(actualHash => {
        if (actualHash === hash) {
          const style = document.createElement('style');
          style.textContent = css;
          document.head.appendChild(style);
          console.log('CSS 应用:', css.substring(0, 20) + '...');
        } else {
          console.error('哈希不匹配', el);
        }
      }).catch(e => console.error('哈希错误:', e));
    } else {
      console.warn('跳过无效元素', el);
    }
  });
})();

importScript('MediaWiki:Importjs/'+ wgPageName + '.js');