JavaScript 运行 别处但不在 MediaWiki:common.js
JavaScript running elsewhere but not in MediaWiki:common.js
以下代码:
jQuery( function() {
var kscript = document.createElement("script");
kscript.src = 'https://assets-cdn.kf5.com/supportbox/main.js?' + (new Date()).getDay();
kscript.setAttribute("id","kf5-provide-supportBox");
kscript.setAttribute("kchat-id","1041075");
kscript.setAttribute("kf5-domain","airbook.kf5.com");
kscript.setAttribute("charset","utf-8");
var s = document.getElementsByTagName('head')[0];
s.appendChild(kscript);
});
嵌入普通 HTML 页面时,它就像一个魅力。它呈现一个图标并在单击时触发一个 IM 对话框。
然而,当嵌入 MediaWiki:common.js 时,它不起作用。我可以清楚地看到生成并放入段中的正确位置。不过好像什么都没发生。
Screenshot from DevTools
Test Page from a plain HTML page
Test Page from a Wiki page(有中文但是内容可以忽略)
因为common.js里面的JS加载的比较晚,
如果您在测试页中的脚本周围添加一个 setTimeout,您会发现它也不会加载。在您的 wiki 中,您可以将此添加到 common.js 以使其工作:
(function() {
var kscript = document.createElement("script");
kscript.src = 'https://assets-cdn.kf5.com/supportbox/main.js?' + (new Date()).getDay();
kscript.setAttribute("id","kf5-provide-supportBox");
kscript.setAttribute("kchat-id","1041075");
kscript.setAttribute("kf5-domain","airbook.kf5.com");
kscript.setAttribute("charset","utf-8");
var s = document.getElementsByTagName('head')[0];
s.appendChild(kscript);
isKF5()
})();
function isKF5(){
if (typeof KF5SupportBoxAPI !== 'undefined') {
KF5SupportBoxAPI.init()
} else {
setTimeout( function(){
isKF5()
}, 100)
}
}
以下代码:
jQuery( function() {
var kscript = document.createElement("script");
kscript.src = 'https://assets-cdn.kf5.com/supportbox/main.js?' + (new Date()).getDay();
kscript.setAttribute("id","kf5-provide-supportBox");
kscript.setAttribute("kchat-id","1041075");
kscript.setAttribute("kf5-domain","airbook.kf5.com");
kscript.setAttribute("charset","utf-8");
var s = document.getElementsByTagName('head')[0];
s.appendChild(kscript);
});
嵌入普通 HTML 页面时,它就像一个魅力。它呈现一个图标并在单击时触发一个 IM 对话框。
然而,当嵌入 MediaWiki:common.js 时,它不起作用。我可以清楚地看到生成并放入段中的正确位置。不过好像什么都没发生。
Screenshot from DevTools
Test Page from a plain HTML page
Test Page from a Wiki page(有中文但是内容可以忽略)
因为common.js里面的JS加载的比较晚, 如果您在测试页中的脚本周围添加一个 setTimeout,您会发现它也不会加载。在您的 wiki 中,您可以将此添加到 common.js 以使其工作:
(function() {
var kscript = document.createElement("script");
kscript.src = 'https://assets-cdn.kf5.com/supportbox/main.js?' + (new Date()).getDay();
kscript.setAttribute("id","kf5-provide-supportBox");
kscript.setAttribute("kchat-id","1041075");
kscript.setAttribute("kf5-domain","airbook.kf5.com");
kscript.setAttribute("charset","utf-8");
var s = document.getElementsByTagName('head')[0];
s.appendChild(kscript);
isKF5()
})();
function isKF5(){
if (typeof KF5SupportBoxAPI !== 'undefined') {
KF5SupportBoxAPI.init()
} else {
setTimeout( function(){
isKF5()
}, 100)
}
}