Widget:CCB-button:修订间差异
来自OTTOWiki
更多操作
![]() OctoberSama(留言 | 贡献) 小 |
![]() OctoberSama(留言 | 贡献) 小 |
||
第1行: | 第1行: | ||
<includeonly><span id="CCB_button" class="mw-ui-button mw-ui-progressive" | <includeonly> | ||
<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;"> | |||
<span style="margin-left:0.3em;">点我 CCB!!</span> | |||
</span> | |||
</ | |||
<script> | |||
(function waitForGadgetAndBind() { | |||
// 等待 mw.loader 可用 | |||
if (typeof mw === 'undefined' || !mw.loader?.getState) { | |||
return setTimeout(waitForGadgetAndBind, 50); | |||
} | |||
var gadgetName = 'ext.gadget.CaoCaoBi'; | |||
var state = mw.loader.getState(gadgetName); | |||
if (state === 'registered') { | |||
// 模块已注册但未加载,则主动加载 | |||
mw.loader.load(gadgetName); | |||
return setTimeout(waitForGadgetAndBind, 50); | |||
} | |||
if (state === 'loading' || state === 'loaded') { | |||
// 加载中,继续等待 | |||
return setTimeout(waitForGadgetAndBind, 50); | |||
} | |||
if (state === 'ready') { | |||
// 模块就绪,拿到导出接口 | |||
mw.loader.using(gadgetName).then(function(ccb) { | |||
var btn = document.getElementById('CCB_button'); | |||
if (!btn) return; | |||
// 只绑定,不执行 | |||
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:00的版本
注意:本 Widget 不应在页面正文中直接使用,请改为通过模板 {{CCB-auto}}
调用。