簡體   English   中英

在IE9上的html頁面中訪問js內的全局函數

[英]Accessing global function inside js in html page on IE9

我正在嘗試訪問我在main.js文件中聲明的全局函數,並嘗試在html頁面中使用它:

<!DOCTYPE html>
<html>
  <head>

  </head>
  <body>
    <script src='main.js'></script>
    <script>
    (function(){
      window.myFunction();
    })();
    </script>
  </body>
</html>

還有我的main.js文件

(function(){
  window.myFunction = function(){
    alert(1);
  }
})();

這適用於所有瀏覽器,但IE9並沒有測試其他IE版本。 你覺得我做錯了什么? 或者它與IE有什么關系?

你應該在main.js中傳遞這樣的window對象

(function(w){
  w.myFunction = function(){
    alert(1);
  }
})(window);

“()”中的函數關鍵字后面的變量是函數內部傳遞參數的別名,而封裝函數末尾的“()”內的變量是傳遞的實變量。

演示: http//codepen.io/anon/pen/aOgZdB - 已在IE中嘗試過。

我認為你可以直接將函數綁定到窗口的另一件事,你不需要把它放在封裝函數中,如:

   window.myFunction=function(){
      alert(1);
   }

在你的main.js中沒有封裝它。

嘗試這個:

<!DOCTYPE html>
<html>
  <head>
  </head>
    <body>
      <script src='main.js'></script>
      <script>
        window.myFunction();
      </script>
    </body>
</html>

我沒有IE 9,所以我不知道它是否有效。 但在IE 11中測試過。

(function(window){
  window.myFunction = function(){
    alert(1);
  }
})(window);

(function(){
     window.myFunction();
})();

http://jsfiddle.net/aqsrpkpm/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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