2012-04-17 10 views
0

なぜ私はフロントエンドの変更をテストするために行くのですか?IEは約2/3時間の頭痛をプロセスに追加しますか?ザッツない私の質問ところで...私は、私は以下のようなものをファイルにJSクラスを定義するときFooBar is undefinedを得るのですか、なぜ私の質問は次のとおりです。Javascriptクラス "undefined" - IE7

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

を...そしてthusly別のJSファイルからそれを呼び出すようにしてみてください。

FooBar.someFunction("Hello World"); 

... IE7。 IE 8+、FF 6+、Chrome 5+、Safariでは問題ありません。しかし、IE 7はそれを好きではないようです。何か案は?

編集:

ファイルは、彼らがこの例にレイアウトされている順序でロードされています。

+3

私はIE7でこのコードがデータ構造を定義するために実行されるのを止めているという別のエラーがあると思います。あなたが示したコードには何も問題はありません。 IE7のエラーログを見てください。 – jfriend00

+0

スコープの問題である可能性があります。 SomeClassはどこに定義されていますか?この場合、クラスではなくオブジェクトのみを定義しています。オブジェクトやクラスの詳細については、次の記事を参照してください:http://heyjavascript.com/?p=6 –

+0

FYIは、 'filed1'は' field1'とは違った綴りになっているはずですか、 'SomeClass.field1 =あなたの 'someFunction()'では 'variable; – jfriend00

答えて

2

@Baz1nga@jfriend00ここに根本的な原因に触れました。このページには別の問題がありました。それはこれまで私が見たことのないものです。

別のエラー:

"Expected Identifier, string or number" 

は、別のスクリプトでがらくたの結果としてスローされていました。問題の特定の問題は、パラメータ値のないパラメータリストの末尾にカンマ()です。たとえば、

someFunction(param1, param2, param3,); 

他のブラウザでは、この構文には不思議なことに思われます...しかしIE7?ブーム、壊滅的な構文の死!

+1

ええ、私のために後続のコンマもIE7の黙示録を引き起こしました... –

1

a)は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);