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)
  }
  
}