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

Widget:CCB-button:修订间差异

来自OTTOWiki
第1行: 第1行:
<includeonly>
<includeonly>
<span id="CCB_button" class="mw-ui-button mw-ui-progressive" style="cursor: pointer;">
<span id="CCB_button" class="mw-ui-button mw-ui-progressive" style="cursor: pointer;">
    <img src="/images/5/5b/%E5%A4%A7%E7%99%BD%E8%B1%A1.webp" style="width:1em; vertical-align:middle;">
  <img src="/images/5/5b/%E5%A4%A7%E7%99%BD%E8%B1%A1.webp" style="width:1em; vertical-align:middle;">
    <span style="margin-left:0.3em;">点我 CCB!!</span>
  <span style="margin-left:0.3em;">点我 CCB!!</span>
</span>
</span>


<script>
<script>
(function waitForGadgetAndBind() {
(function initCCBButton() {
     // 等待 mw.loader 可用
     // 如果还没有 mw.loader,则延迟重试
     if (typeof mw === 'undefined' || !mw.loader?.getState) {
     if (typeof mw === 'undefined' || typeof mw.loader === 'undefined') {
         return setTimeout(waitForGadgetAndBind, 50);
         return setTimeout(initCCBButton, 100);
     }
     }


     var gadgetName = 'ext.gadget.CaoCaoBi';
     // 触发加载 ext.gadget.CaoCaoBi 模块
     var state = mw.loader.getState(gadgetName);
     mw.loader.load('ext.gadget.CaoCaoBi');


     if (state === 'registered') {
    // 如果你的模块通过 `return { swit_so_CCB, … }` 导出了函数,
         // 模块已注册但未加载,则主动加载
    // ResourceLoader 会帮你把这些函数挂到 window 上
        mw.loader.load(gadgetName);
     if (typeof window.swit_so_CCB !== 'function') {
         return setTimeout(waitForGadgetAndBind, 50);
         // 未就绪,继续轮询
         return setTimeout(initCCBButton, 100);
     }
     }
     if (state === 'loading' || state === 'loaded') {
 
        // 加载中,继续等待
     // 模块已加载、函数已定义,绑定按钮点击事件
        return setTimeout(waitForGadgetAndBind, 50);
     var btn = document.getElementById('CCB_button');
    }
    if (!btn) return;
     if (state === 'ready') {
    btn.addEventListener('click', function(e) {
        // 模块就绪,拿到导出接口
        e.preventDefault();
        mw.loader.using(gadgetName).then(function(ccb) {
        window.swit_so_CCB();
            var btn = document.getElementById('CCB_button');
     });
            if (!btn) return;
})();</script></includeonly><noinclude>注意:本 Widget 不应直接插入条目正文,请使用模板 <code>{{tl|CCB-auto}}</code> 调用。</noinclude>
            // 只绑定,不执行
            btn.addEventListener('click', function(e) {
                e.preventDefault();
                if (typeof ccb.swit_so_CCB === 'function') {
                    ccb.swit_so_CCB();
                } else {
                    console.warn('swit_so_CCB 方法未找到');
                }
            });
        });
        return;
     }
    // 其他状态,继续轮询
    setTimeout(waitForGadgetAndBind, 50);
})();</script></includeonly><noinclude>注意:本 Widget 不应在页面正文中直接使用,请改为通过模板 <code>{{tl|CCB-auto}}</code> 调用。</noinclude>

2025年6月20日 (五) 21:02的版本

注意:本 Widget 不应直接插入条目正文,请使用模板 {{CCB-auto}} 调用。