それ!!Modernizr.mq === true
は、常に間違ったことをテストしているからです!
ドキュメントに従って:
ブラウザがメディア クエリをまったくサポートしていない場合 (例: oldIE)、mq() は常に false を返します。
しかし、これModernizr.mq()
はfalse
あまりにもです!実際に何かをテストする必要があります。ここで、all
キーワードはまさにあなたが必要とするものです(またはonly all
ポールが提案するように):
Modernizr.load({
test: Modernizr.mq('only all'),
nope: 'polyfill.js'
});
ただし、 Respond.jsを含むModernizr 2.0.xのすべてのカスタム ビルドには、代わりに別のポリフィルをロードする場合を除いて、実際にこれをテストする必要はありません。その場合、ビルドから Respond.js を無効化/削除する必要があります。mq
モダナイザー 2.5.x
Modernizr 2.5.x の登場により、上記は当てはまりません。省略された変更ログは、次のことを指定します。
IE8 でクラッシュの競合が発生していたため、ビルダーに Respond.js を含めなくなりました。プロジェクトでまだ Respond.js が必要な場合は、手動で含めてください。
これは、今戻ってくるModernizr.mq('only all')
可能性があることfalse
を意味します...