ブラウザが“奇癖”にあるかどうかを確認する方法モード?
-
06-07-2019 - |
質問
比較的厳格なdoctypeとHTMLマークアップを備えたページに準拠していると仮定しますが、おそらく制御できないユーザーコンテンツのために、いくつかの愚かな方法で見逃しているかもしれません...コンテンツ管理システムまたはコンテンツ管理システムのテーマで、基本構造を制御し、JavaScriptを必要としますが、ページに入る他のすべてについては責任を負いません。
ブラウザが「気まぐれ」に入ることをいつ決定するか(または:何を決定するか)より標準に準拠したエンジンを使用するのではなく、モードですか?
IE、Chrome、Safari、Firefoxはもちろんすべて異なる方法で処理するため、主要なブラウザーのそれぞれに対する回答を探しています。 1つのエラーでそれを強制するのに十分ですか、それとも余裕がありますか?
解決
FirefoxとOpera では、ブラウザが「互換モード」になっているかどうかを確認できます。ページ情報を確認します。
document.compatMode
を使用すると、ほとんどのブラウザーで現在のモードがわかります。
Chrome、Safari、およびIE で、アドレスバーで次のJavaScriptを実行します。
javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')
(最近のセキュリティの変更により、アドレスバーに貼り付けた後に javascript:
の部分を再入力する必要があることに注意してください)
他のヒント
JavaScriptでレンダリングモードを照会できるので、ブックマークレットを持つことができますは、ページが使用しているレンダリングモードを示します。
このレンダリングモードブックマークレットが見つかりました私にとってはうまくいく:
javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');
「1つのエラーでそれを強制するのに十分ですか、それとも余裕がありますか?」という実際の具体的な質問に対する完全な回答。それは完全にエラーに依存しているということです。たとえば、
<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
IE 6で強制モードを強制します&amp; 7(実際にはエラーを示していないにもかかわらず)(ファイルの最初の行が宣言ではない場合に、完全にぐらついているだけです)。 タイプ/癖の簡単なリストは、こちら
にあります。テストのためにHTMLに次の行を貼り付けてみてください(非常に悪いjavascriptの振る舞いがここに渡されています-申し訳ありませんが、これは絶対に公開しないでください:)
<a href="javascript:alert(document.compatMode);">What mode am I?</a>
IEに(doctypeを介して)厳密であるべきだと伝えると、ページの途中で気が変わりません。
quirksモードを正しく理解している場合、宣言されたdoctypeに対して検証しないページは、quirksモードをトリガーするには不十分です。正しく表示されません。
さまざまなブラウザが各doctypeを処理する方法を決定するために見つけた最良のリソースは、こちらです。
Web Developer Toolbarアドオンを備えたFirefoxの場合、バーの右側にある3つのアイコンを見ることができます。左端には現在のモードが表示されます。
IEでは、開発者ツール(F12を押す)に表示され、メニューに次のように表示されます:ドキュメントモード:... また、そこで別のモードを強制することもできます。
html5ページで、&quot; &lt;!DOCTYPE html&gt;
&quot;と記述します。ページで始まるはに変更することができます
document.compatMode = 'CSS1Compat'