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

Widget:GF立绘切换:修订间差异

来自OGAS数据中枢
弃权者留言 | 贡献
无编辑摘要
弃权者留言 | 贡献
无编辑摘要
第19行: 第19行:
             if (!container) return;
             if (!container) return;


            // 点击主图切换正常/重创
             container.addEventListener('click', function() {
             container.addEventListener('click', function() {
                console.log("--- 触发主图点击事件 ---");
                 var img = container.querySelector('img');
                 var img = container.querySelector('img');
                 var activeBtn = box.querySelector('.gf-switch-btn.active');
                 var activeBtn = box.querySelector('.gf-switch-btn.active');
                 if (!img || !activeBtn) return;
               
                 if (!img) { console.error("未找到 img 标签"); return; }
                if (!activeBtn) { console.error("未找到处于 active 状态的按钮"); return; }


                 var normalSrc = activeBtn.dataset.src;
                 var normalSrc = activeBtn.dataset.src;
                 var damageSrc = activeBtn.dataset.damage;
                 var damageSrc = activeBtn.dataset.damage;


                 // 如果没有重创图路径(比如filepath解析失败),则不执行
                 console.log("当前图片 SRC:", img.src);
                 if (!damageSrc || damageSrc.indexOf('http') === -1 && damageSrc.indexOf('/') !== 0) return;
                console.log("按钮原始图路径:", normalSrc);
                 console.log("按钮重创图路径:", damageSrc);


                 var isCurrentDamage = img.src === damageSrc;
                if (!damageSrc || damageSrc.length < 5) {
                    console.warn("重创图路径无效或未定义,请确认是否存在后缀为 _D 的图片。");
                    return;
                }
 
                // 统一处理 URL,防止因为绝对路径/相对路径导致匹配失败
                 var isCurrentDamage = img.src.indexOf(damageSrc) !== -1;
                 var targetSrc = isCurrentDamage ? normalSrc : damageSrc;
                 var targetSrc = isCurrentDamage ? normalSrc : damageSrc;
                console.log("判定结果:", isCurrentDamage ? "当前是重创态 -> 切换回正常" : "当前是正常态 -> 切换至重创");
                console.log("正在加载目标图片:", targetSrc);


                 container.classList.add('loading');
                 container.classList.add('loading');
第38行: 第50行:
                 tempImg.onload = function() {
                 tempImg.onload = function() {
                     img.src = targetSrc;
                     img.src = targetSrc;
                    container.classList.remove('loading');
                    console.log("图片加载成功并已替换。");
                };
                tempImg.onerror = function() {
                    console.error("加载失败,请检查该 URL 是否可访问:", targetSrc);
                     container.classList.remove('loading');
                     container.classList.remove('loading');
                 };
                 };
第43行: 第60行:
             });
             });


            // 按钮切换逻辑
             btns.forEach(function (btn) {
             btns.forEach(function (btn) {
                 btn.addEventListener('click', function (e) {
                 btn.addEventListener('click', function (e) {
第50行: 第66行:


                     var src = btn.dataset.src;
                     var src = btn.dataset.src;
                     if (!src) return;
                     console.log("切换立绘组,新图路径:", src);


                     var oldImg = container.querySelector('img');
                     var oldImg = container.querySelector('img');

2026年5月15日 (五) 23:16的版本

<script> (function () {

   function initSwitcher() {
       document.querySelectorAll('.gf-infobox-new').forEach(function (box) {
           if (box.dataset.ready) return;
           box.dataset.ready = '1';
           var container = box.querySelector('.gf-image-container');
           var btns = box.querySelectorAll('.gf-switch-btn');
           var overlay = box.querySelector('.gf-switcher-overlay');
           var toggle = box.querySelector('.gf-switcher-toggle');
           if (toggle && overlay) {
               toggle.addEventListener('click', function() {
                   overlay.classList.toggle('collapsed');
               });
           }
           if (!container) return;
           container.addEventListener('click', function() {
               console.log("--- 触发主图点击事件 ---");
               var img = container.querySelector('img');
               var activeBtn = box.querySelector('.gf-switch-btn.active');
               
               if (!img) { console.error("未找到 img 标签"); return; }
               if (!activeBtn) { console.error("未找到处于 active 状态的按钮"); return; }
               var normalSrc = activeBtn.dataset.src;
               var damageSrc = activeBtn.dataset.damage;
               console.log("当前图片 SRC:", img.src);
               console.log("按钮原始图路径:", normalSrc);
               console.log("按钮重创图路径:", damageSrc);
               if (!damageSrc || damageSrc.length < 5) {
                   console.warn("重创图路径无效或未定义,请确认是否存在后缀为 _D 的图片。");
                   return;
               }
               // 统一处理 URL,防止因为绝对路径/相对路径导致匹配失败
               var isCurrentDamage = img.src.indexOf(damageSrc) !== -1;
               var targetSrc = isCurrentDamage ? normalSrc : damageSrc;
               console.log("判定结果:", isCurrentDamage ? "当前是重创态 -> 切换回正常" : "当前是正常态 -> 切换至重创");
               console.log("正在加载目标图片:", targetSrc);
               container.classList.add('loading');
               var tempImg = new Image();
               tempImg.onload = function() {
                   img.src = targetSrc;
                   container.classList.remove('loading');
                   console.log("图片加载成功并已替换。");
               };
               tempImg.onerror = function() {
                   console.error("加载失败,请检查该 URL 是否可访问:", targetSrc);
                   container.classList.remove('loading');
               };
               tempImg.src = targetSrc;
           });
           btns.forEach(function (btn) {
               btn.addEventListener('click', function (e) {
                   e.stopPropagation();
                   if (btn.classList.contains('active')) return;
                   var src = btn.dataset.src;
                   console.log("切换立绘组,新图路径:", src);
                   var oldImg = container.querySelector('img');
                   if (oldImg) oldImg.style.opacity = '0';
                   setTimeout(function () {
                       container.innerHTML = '<img src="' + src + '" style="max-width:100%;max-height:500px;object-fit:contain;opacity:0;transition:opacity 0.3s;height:auto;width:auto;">';
                       var newImg = container.querySelector('img');
                       if (newImg) {
                           newImg.onload = function () { newImg.style.opacity = '1'; };
                           if (newImg.complete) newImg.style.opacity = '1';
                       }
                   }, 150);
                   btns.forEach(function (b) { b.classList.remove('active'); });
                   btn.classList.add('active');
               });
           });
       });
   }
   if (document.readyState === 'loading') {
       document.addEventListener('DOMContentLoaded', initSwitcher);
   } else {
       initSwitcher();
   }
   if (window.mw) {
       mw.hook('wikipage.content').add(initSwitcher);
   }

})(); </script>