web-dev-qa-db-ja.com

IE8のJavascriptエラーの最も可能性の高い原因は何ですか?

IE7(およびFirefox、Chrome、Safari)で正常に動作したページのIE8で多くのJavaScriptエラーが表示されます。 IEがJavaScriptのセキュリティなどにいくつかの変更を加えたことを知っています。これらのいくつかは明確なエラーメッセージを提供しません-クロスドメイン違反のようなものは非常に漠然とした例外をスローすることになります。

IE8 JavaScriptエラーのトラブルシューティングを行う際に、上位の違反者のチェックリストを作成しましょう。 one IE8 JavascriptがJavaScriptエラーの原因となるように変更してください。

20
Jon Galloway

「unique_username」が投稿したものが正しいことを確認できました。

(引用)実際にTONのものが変更されました。

まず、実際にどのモードにいるかが重要です。IE8には、3つの(3つの)モードがあります。

  • IE5の癖-ページにdoctypeがなく、ページはIE5のようにレンダリングされます
  • IE 7標準モード-Doctypeがありますが、IE8標準モードをオプトアウトしているか、ローカルホストで実行されているか、「互換モード」で実行されています
  • IE 8標準モード-Doctypeがあり、イントラネット上にあります(デフォルトモード)

これで、IE5/IE7モードでレンダリングしている場合、ページに干渉しないべきでないいくつかのメソッドが追加されること以外は何も変更されません

ただし、大多数の場合と同様に、doctypeセットを使用して実行しているため、IE8標準モードでは、次の変更が行われています。

1.) document.getElementById( id ); //now only returns the CORRECT matches!

2.) .getElementsByName(name); //正しい一致のみを返すようになりました! いいえ、修正されていません!

3.) .getAttribute( name ); //returns the CORRECT value for the given attribute!
4.) .setAttribute( name, value ); //actually SETS the name/value CORRECTLY (no more cAmElCaSe crud)!
5.) CSS Expressions are NO LONGER allowed (deprecated)
6.) Operation Aborted errors will still be thrown (in some cases) however the cases are fewer, and the error won't kill the entire page/DOM
7.) The attributes[] array on elements should (from the RC build onwards) be correct in terms of contents, have a length, etc.
8.) Button elements now submit the contents of the value attribute, NOT the HTML contents of the Button Tag

また、CSS 2.1の修正も多数行われているため、以前は奇妙にレンダリングされていたもの、またはハックが必要だったものの方がはるかに優れています。 (アルファ/透明度の詳細については以下を参照-大きな変更がありました)

詳細は IE Blog を参照してください。

また、バグの詳細な詳細については Webバグトラック を参照してください。IE8(および他のすべてのブラウザー)の修正

SVG、丸みを帯びた角、ECMAScriptベースのイベントリスナー、Better Form Elementのデザイン/イベントなどはまだありません。

PS特定の問題がある場合はお知らせください。問題を解決するお手伝いをします。 ;-)

アップデート:

iE8 Beta2およびIE8パートナーリリース1ではwindow.resizeイベントが現在壊れています(起動しません) RTMビルドで修正されました

window.open(); in IE8 Partner Release is sometimes failing "claiming" that the target url is not available (quirky, hard to reproduce)
13
scunliffe

これが私が発見した本当に楽しいもの(/皮肉オフ)です。 MIMEタイプが「text/javascript」ではなく「application/javascript」の場合、Internet Explorerは次のようになります。

A)予期しないMIMEタイプを無視して、とにかくファイルを使用しますか?

B)ファイルをまったくロードしない?

C)ファイルの最初の100行程度を取得し、HTMLの前にある別のJSファイルの前に追加します。次に、順不同のハーフファイル+実際のファイルではないため、あらゆる種類のエラーを表示します。作業?

そうです、答えはCです...私はあなたをからかいます。以前は「application/javascript」MIMEタイプを使用してIE6/7でのJSファイルのキャッシュを防止していたため、結果として、IE8が本当におかしなエラーを発生させている理由を理解しようとして1日が無駄になりました。幸いにも、500行のファイルの650行目でエラーが発生したことが通知されたとき(そしてデバッガーでファイルを表示したときに、先頭に追加された他のファイルが表示されたとき)に何が起こっているのかがわかりました。

話の教訓:IE8を機能させたい場合は、JSファイルのMIMEタイプに「application/javascript」を使用しないでください。

11
machineghost

私はここにいくつかのリストを見つけました: http://social.msdn.Microsoft.com/forums/en-US/iewebdevelopment/thread/772e4b07-29e1-4909-b77f-f61c503f9579/

私はこれらを検証していません、そしてそれらのいくつかはかなり曖昧です。

2
Jon Galloway

このパーティーには少し遅れましたが、同じ質問を調査しているときに私はこれに出くわしました [〜#〜] msdn [〜#〜] IEでサポートされていない機能を強調する記事= 8のJScriptエンジン。

1
Brownman98