[英]the script works in firefox and chrome but not in ie, jquery undefined
[英]Object from external script undefined in ie and firefox
我正在構建一個JavaScript小部件,用戶可以將其包含在他們的網站上,該小部件將顯示來自我們的Web應用程序的數據。 用戶將包含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(認為這只是一個ie問題,直到它在firefox中不起作用,認為很奇怪)在控制台ReferenceError: MYLIBRARY is not defined
返回了錯誤消息ReferenceError: MYLIBRARY is not defined
。
我最初的想法是w1.js
尚未在調用MYLIBRARY
之前完成加載,但是addEventListener('load')
似乎按預期運行,除非我錯過了什么或做錯了什么。
有任何想法嗎?
經過一些額外的故障排除后,我發現了導致此問題的原因。 它與javascript沒有關系。 加載w1.js
的URL是一個內部測試站點,該站點使用自簽名的ssl證書。 之所以不能在Firefox中工作,或者是因為在Firefox中不存在此證書的異常,或者是,因此,在進行調用時,從未返回過文件。 添加例外解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.