我正致力于构建一个javascript小部件,用户可以将这些小部件包含在他们的网站上,这些小部件将显示来自我们网络应用程序的数据。用户将包含w1.js
的主文件包含以下内容:
var MYLIBRARY = MYLIBRARY || (function(){
var _args = {};
var jQuery;
function main(){
//simply display loaded jquery version as a test
jQuery('#mylibrary-w1-content').text(jQuery.fn.jquery);
}
function scriptLoadHandler(){
jQuery = window.jQuery.noConflict(true);
main();
}
return {
init: function(Args){
_args = Args;
if(window.jQuery === undefined || window.jQuery.fn.jquery !== '3.3.1'){
var script_tag = document.createElement('script');
script_tag.setAttribute("type", "text/javascript");
script_tag.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js");
if(script_tag.readyState){
script_tag.onreadystatechange = function(){ // for old versions of ie
if(this.readyState === 'complete' || this.readyState === 'loaded'){
scriptLoadHandler();
}
};
} else {
script_tag.onload = scriptLoadHandler;
}
(document.getElementsByName("head")[0] || document.documentElement).appendChild(script_tag);
} else {
jQuery = window.jQuery;
main();
}
}
};
/* END OF LIBRARY
*******************************************************************************/
}());
用户在其网站上包含的代码如下:
<script src="//thewebsite.com/widgets/w1.js"></script>
<script>
window.addEventListener('load', function(){MYLIBRARY.init(["somevalue"]);}, false);
</script>
<div id="mylibrary-w1-content"></div>
所有内容都按照预期在chrome中运行,但ie和firefox(认为这只是一个问题,直到它没有在firefox中工作,认为这很奇怪)在控制台中返回错误消息{{1} }。
我最初的想法是ReferenceError: MYLIBRARY is not defined
在调用w1.js
之前没有完成加载,但MYLIBRARY
似乎按预期运行,除非我错过了某些内容或我做错了什么。
任何想法?
答案 0 :(得分:0)
经过一些额外的故障排除后,我发现了导致此问题的原因。它与javascript无关。从w1.js
加载的URL是一个使用自签名ssl证书的内部测试站点。这不是在firefox中工作的原因,或者是因为firefox中不存在此证书的例外,或者因此,当调用时,文件从未返回。添加例外解决了这个问题。