簡體   English   中英

來自外部腳本的對象在ie和firefox中未定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM