Internet Explorer 8で印刷スタイルシートがHTML5タグに反映されないときの対処法
問題の概要
Internet Explorer 8(IE8)は、HTML5で新たに追加された要素(section、article、header、footerなど)を標準状態では認識しません。そのため、画面上の表示だけでなく、印刷用のスタイルシート(印刷スタイルシート)もHTML5タグに対して正しく適用されないという問題が発生します。
解決策1:html5shivを利用する
最も手軽で確実な解決方法は、「html5shiv」というJavaScriptライブラリを読み込むことです。html5shivは、旧式のInternet ExplorerでもHTML5のセクショニング要素を使用できるようにするポリフィルで、IE6〜IE9向けに基本的なHTML5スタイリング機能も提供してくれます。
ページのhead要素内に、以下のようなコードを追加しましょう。
<!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script> <![endif]-->
条件付きコメントを使用することで、IE9未満のブラウザでのみスクリプトが読み込まれ、モダンブラウザには一切影響を与えません。
解決策2:document.createElementで要素を作成する
外部ライブラリを使わずに対応したい場合は、JavaScriptのdocument.createElementメソッドでHTML5要素を明示的に生成する方法もあります。IEは未知の要素でも、createElementで一度生成するとCSSが適用可能になる仕組みのためです。
var demo = document.createElement("demo");
demo.innerHTML = "Working!";
document.appendChild(demo);このように、使用するHTML5の新要素やカスタム要素を事前に生成しておくことで、スタイルシートが正しく機能するようになります。
まとめ
IE8でHTML5タグに印刷スタイルシートが効かない場合は、html5shivの導入が最も簡単な対策です。レガシーIEへの対応が必要なプロジェクトでは、ぜひ活用してみてください。
-
Internet ExplorerでAdobe Flashが動作しないときの対処法|2つの解決策を解説
YouTubeなどの動画をブラウザで視聴する際、Mozilla FirefoxやGoogle ChromeではFlash Playerが正常に動作するのに、Internet Explorerだけがうまく機能しないことがあります。Adobeの公式テストページを実行しても、原因を特定できないケースも少なくありません。この問題には主に2つの解決方法があります。ひとつはInternet Explorerの設定を見直す方法、もうひとつはコマンドプロンプトを使ってFlash関連ファイルを再登録する方法です。方法1:互換表示設定を変更するInternet Explorerで動画を再生しようとすると、Flas
-
Internet Explorer 6を廃止すべきではない理由
近年、MicrosoftはInternet Explorer 6(IE6)の「安楽死」キャンペーンを展開しています。同社は今になって、IE6が大きな過ちだったことを認め、その存在を快く思っていない様子です。しかし、これは数年後にVistaでも繰り返されかねない光景です。このキャンペーンから読み取れるメッセージは明快です。ソフトウェアベンダーは決して信用できない。市場環境が変化すれば、彼らは自らの信条を180度ひっくり返す可能性があるのです。2000年代半ば、Microsoftは業界の巨人として、競合のいないIE6でWebを君臨していました。しかし市場での優位性が低下するにつれ、Microsof