2012-04-17 46 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);