IE9 での簡単なデバッグ
- IE9を開く
- F12 キーを押して開発者ウィンドウを開きます
- [スクリプト] タブをクリックします。
- 右側のペインで「コンソール」をクリックします
- ページを読み込んでみる
次のエラーが表示されます。
SCRIPT5009: 'matchMedia' is undefined
scripts.js, line 2 character 2
IE9 は「matchMedia」機能をサポートしていないため、定義していません。コードでそれを参照しようとすると、JavaScript の実行がその時点で完全に停止します。
何が起こっている
jQuery がページに読み込まれています。これを確認するには、コンソール出力の下のテキスト入力行に「$」と入力して Enter キーを押します。コンソールは、$ の定義方法に関するデータを出力します。これは、jQuery がロードされた非常に良い兆候です。すべての状況で決定的なわけではありませんが、これについては準備ができています。
何が起こっているかというと、onDomReady ($(document).ready(...) 経由) を実行しているコールバックですが、最初の行でエラーが発生しています。このエラーにより、残りのコールバックが実行されなくなります。
機能サポートの確認
caniuse.comを使用して、どのブラウザーが機能 (JS、CSS など) をサポートしているかを確認できます。この場合: http://caniuse.com/matchmedia . IE10 が matchMedia 関数をサポートする最初のバージョンであることに注意してください。以前のバージョンでは、デフォルトで matchMedia がなく、それを参照するとエラーが発生すると想定できます。
今できること
caniuse.com サイトの上部には、「リソース」というタイトルの横方向のリストがあります。この領域では、通常、特定の機能をサポートしていないブラウザーにパッチを適用する方法を見つけることができます。
matchMedia の場合、カスタム js を使用して matchMedia の機能をエミュレートする「ポリフィル」へのリンクがあります。URL はhttps://github.com/paulirish/matchMedia.js/です。
ポリフィルには、使用に制限や問題がある場合があるため、注意してください。また、matchMedia ポリフィルが Web テクノロジの著名人であるPaul Irishによって作成されたことも興味深い点です。
条件付き IE インクルードに関する注意
IE は条件付きコメントをサポートしているため、IE の特定のバージョンに対してのみ上記で定義したポリフィルを含めることができます。あなたの場合、IE10未満のもの。これは MDN で文書化されています: http://msdn.microsoft.com/library/ms537512.aspx
<!--[if lte IE 10]]>
<script src="polyfill.js"></script>
<![endif]-->
これは、可能な場合はブラウザーの実装を使用し (通常はより高速で、より多くの機能を備えている可能性があります)、必要な場合にのみポリフィルを使用できるようにするためです。