InternetExplorer8の互換表示をオフにするとJavaScriptが動作しない
Home>Information>InternetExplorer8の互換表示をオフにするとJavaScriptが動作しない
InternetExplorerは、8になるまではHTMLに独自の解釈を行っており、厳密なHTMLのルールを無視して、アバウトなソースであっても、ちゃんと表示させるようにつくられてきました。
InternetExplorer8になって、このアバウトな解釈を避け、より正確にHTMLの記述を求めるようになりました。そのため、正確に記述されていないHTML文書は、きちんと表示されなくなるようになりました。
これにより、今まできちんと動作していたにも関らず、ブラウザを変更したら動作しなくなった、という現象が起きるようになりました。
応急措置
緊急避難的にこの問題を回避するには、以下の方法を試してください。
ウェブページを見る場合
普段見ているウェブサイトの表示がおかしくなった場合は、InternetExplorer8の、「ツール」→「互換表示」をクリックして、チェックを入れます。
また、「ツール」→「互換表示設定」で、「互換表示ですべてのWebサイトを表示する」にチェックを入れると、すべてのウェブサイトに互換表示が適用されます。
互換表示とは、InternetExplorer7以前の、IEによるHTMLの独自解釈で表示する、という意味です。
ウェブページを見せる場合
自分で作成したウェブページを、ユーザに対して互換表示で見せたい場合には、head要素内に、以下のように記述します。
<meta http-equiv="X-UA-Compatible" content="IE=emulateIE7">
→詳しくは「HTML:META要素」の「InternetExlorerのレンダリングモードを指定する」をご覧下さい。
根本的な解決
以上の対処により、以前と同じ動作を確保できます。
しかし、互換表示はIE独自の解釈のまま表示する、ということですから、今後、この機能がなくなる可能性は十分にあります。また、IE以外のブラウザ(GoogleChromeやFirefox、Operaなど)では、そもそも動作しない、という可能性もあります。
そこで、まずは上記の応急措置をとっておき、その後、根本的な改善を行うことをお薦めします。
根本的な改善とは、正しいHTMLで記述することにほかなりません。
正しいHTMLで書けば問題なくHTMLは表示されるし、JavaScriptも動作します。
一例ですが、<input type="hidden" value="値">をbody要素内に配置して、JavaScriptに渡す値を格納させている場合、IEの互換モードでは動作しますが、非互換モードや他のブラウザでは動作しません。
input要素は、form要素内に配置されていなければならない、というルールがあるためです。
このようなHTML上の問題を確認するには、HTML文書の文法をチェックするサイトなどを活用するとよいでしょう。
→「Another HTML-lint gateway」(HTML文書の文法チェックと改善提案をするサイト)
関連リンク
よく読まれている記事
- 右クリックメニューの表示が遅い【Information】
- 画像の一部にリンクを貼る(クリッカブルマップ【Dreamweaver】
- 一定時間でローテーションする広告【JavaScript】
- Dreamweaver【Dreamweaver】
- クリックした画像を拡大・縮小する【JavaScript】
UpDate:2009-12-9