2012-12-14 31 views
0

在我的HTML代碼中,我已導入外部JS文件,也有自己的內聯JS代碼,並以我個人的js代碼,我需要調用對象的方法在外部js文件中定義。渲染後,源代碼如下所示:的Javascript調用另一個腳本標記的類方法失敗在IE

<script type="text/javascript"> 
    // content of the extenral js file 
    ... 
    var bar = {}; 
    bar.foo = {}; 
    ... 
    bar.foo.class = {}; 
    bar.foo.class.method = function() {...}; 
    ... 
</script> 
<script type="text/javascript"> 
    // content of my own javascript code 
    ... 
    function load() { 
    ... 
    bar.foo.class.method(); 
    ... 
    } 
    ... 
</script> 

對於框架我用我不能在一個地方做的兩個部分(即,或者兩者都是在外部js文件或者兩者都在我自己的直列js代碼)。現在,這段代碼可以在Firefox,Chrome和Safari中使用,但不適用於IE。該IE調試器顯示如下錯誤:「無法獲得屬性‘富’的值:對象爲null或undefined」

它看起來像無論是在第一標記定義的bar.foo.class是不可見第二個標籤或第二個標籤在第一個標籤(第一個標籤都是關於類定義,沒有真正的工作流)之前執行。

有誰知道如何解決這個在IE?謝謝!

回答

0

試試這個code..may是知名度問題.....我認爲它會工作

<script type="text/javascript"> 
     // content of the extenral js file 
     ... 
     var bar = {}; 
     bar.foo = {}; 
     ... 
     bar.foo.class = {}; 
     bar.foo.class.method = function() {...}; 
     ... 
    </script> 
    <script type="text/javascript"> 
     // content of my own javascript code 
var _bar = bar; 
     ... 
     function load() { 
     ... 
     _bar.foo.class.method(); 
     ... 
     } 
     ... 
    </script> 

另一種選擇..避免使用var關鍵字那麼這將是全球

<script type="text/javascript"> 
      // content of the extenral js file 
      ... 
      bar = {}; 
      bar.foo = {}; 
      ... 
      bar.foo.class = {}; 
      bar.foo.class.method = function() {...}; 
      ... 
     </script> 
     <script type="text/javascript"> 
      // content of my own javascript code 
      ... 
      function load() { 
      ... 
      bar.foo.class.method(); 
      ... 
      } 
      ... 
     </script> 
+0

第一個不能正常工作。第二個也不起作用。但有一件有趣的事情是,如果我使用你的第二個代碼,錯誤信息將是「bar is undefined」。請注意,在我自己的代碼中,錯誤代碼是「無法獲取屬性'foo'的值:null或undefined」。我認爲這表明變量'bar'被第二個標籤中的代碼識別,但不是它的屬性'foo'。也許我們可以看看爲什麼foo不被識別,而不是酒吧......但我仍然不知道如何解決這個問題...... – user1631973

+0

我試圖提醒(酒吧)。在IE中它顯示「未定義」,而在所有其他中顯示「{object,object}」。所以我認爲問題仍然是第一個標籤中定義的'bar'無法被第二個標籤中的代碼識別... – user1631973

0

單詞class是保留字。用別的東西像klass或做類似foo["class"]

+0

對不起,class不是我的代碼中的真實姓名,只是一個例子...而你是指在第二個標籤(即調用它時)或第一個標籤(即定義它時)中使用foo [「class」]? – user1631973