2012-04-17 48 views
0

爲什麼任何時候我去測試前端更改IE爲這個過程增加了大約2/3小時的頭痛?那不是我的問題BTW ...我的問題是,爲什麼我得到一個FooBar is undefined,當我在一個文件中定義一個類JS正是如此:Javascript class「undefined」 - IE7

var FooBar = { 
    field1: '', 
    field2: '', 
    someFunction: function(variable) { 
     field1 = variable; 
    } 
} 

...並試圖正是如此,從另一個JS文件調用它:

FooBar.someFunction("Hello World"); 

...在IE7中。在IE 8+,FF 6+,Chrome 5+和Safari中沒有問題。但IE 7似乎並不喜歡它。有任何想法嗎?

編輯:

的文件是在他們在這個例子中規定的順序負載。

+3

我猜你在IE7中有其他錯誤,即阻止這些代碼被執行來定義你的數據結構。你所顯示的代碼沒有問題。看看IE7中的錯誤日誌。 – jfriend00 2012-04-17 04:10:27

+0

可能是一個範圍界定問題。 SomeClass被定義在哪裏?在這種情況下,你只定義了一個對象,而不是一個類。有關對象和類的更多信息,請參閱此文章:http://heyjavascript.com/?p=6 – 2012-04-17 04:11:33

+0

僅供參考,「filed1」應該與「field1」拼寫不同,或者您的意思是「SomeClass.field1 =變量;'在'someFunction()'中。 – jfriend00 2012-04-17 04:12:02

回答

2

@Baz1nga@jfriend00觸及根源在這裏。頁面上還有一個問題,這是我以前從未見過的。

另一個錯誤:

"Expected Identifier, string or number" 

是被扔在另一個腳本廢話的結果。問題中的具體廢話是後面的逗號(,),後面沒有參數值。例如:

someFunction(param1, param2, param3,); 

其他瀏覽器奇怪地似乎應付這種語法...但IE7? BOOM,災難性的語法死亡!

+1

是的,對我來說一個尾隨的逗號也會導致IE7的啓示... – 2014-08-22 09:33:53

1

一)確保有是在IE中被拋出沒有JS錯誤,也有一些IE特定的JS問題,打開選項時JS錯誤發生

b鍵顯示彈出式),請確保您的類變量定義文件被加載第一,然後類的用法..也修改語法一點:

var FooBar = FooBar || { 
    field1: '', 
    field2: '', 
    someFunction: function(variable) { 
     field1 = variable; 
    } 
} 

C)最後添加一些調試代碼,看看是否正在執行,你正在使用的類文件或不,添加一些警報語句。

setTimeout(function(){ 
alert("before calling foorbar"); 
FooBar.someFunction("Hello World"); 
alert("foobar called"); 
},500);