web-dev-qa-db-ja.com

ブラウザが「奇抜」モードかどうかを確認する方法は?

比較的厳密なdoctypeとHTMLマークアップを備えたページに準拠していると仮定しますが、いくつかの馬鹿げた方法で見逃している可能性があります。管理システムまたはコンテンツ管理システムのテーマ。基本構造を制御し、JavaScriptを必要としますが、ページに入る他のすべてについては責任を負いません。

ブラウザがより標準に準拠したエンジンを使用するのではなく、「奇抜」モードに移行することを決定した場合、どのように伝えることができますか(または何を決定しますか)。

IE、Chrome、Safari、Firefoxはもちろんすべて異なる方法で処理するため、主要なブラウザーごとに回答を探しています。 1つのエラーでそれを強制するのに十分ですか、それとも余裕がありますか?

126
Joel Coehoorn

FirefoxおよびOperaでは、ページ情報を確認することで、ブラウザが「互換モード」になっているかどうかを判断できます。

document.compatModeを使用すると、ほとんどのブラウザで現在のモードがわかります。

Chrome、Safari、およびIEで、アドレスバーで次のjavascriptを実行します。

 javascript:window.alert('You are in ' + (document.compatMode==='CSS1Compat'?'Standards':'Quirks') + ' mode.')

(最近のセキュリティの変更により、アドレスバーに貼り付けた後にjavascript:部分を再入力する必要があることに注意してください)

154
Chris Ballance

JavaScriptでレンダリングモードを照会できるので、ページが使用しているレンダリングモードを示す Bookmarklet を使用できます。

このレンダリングモードブックマークレット が見つかりました。

javascript:m=(document.compatMode=='CSS1Compat')?'Standards':'Quirks';window.alert('You%20are%20in%20'%20+%20m%20+%20'%20mode.');
19
Dave Webb

「1つのエラーでそれを強制するのに十分ですか、それとも余裕がありますか?」という実際の具体的な質問に対する完全な回答。それは完全にエラーに依存しているということです。例えば、

<!-- Comment -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

IE 6&7で強制モードを強制しますが、実際にはエラーは発生しません(ファイルの最初の行が宣言でない場合は、全体がぐらつくだけです。)。タイプのクイックリスト/ quirksを見つけることができます here

テスト用にHTMLに次の行を貼り付けてみてください(非常に悪いjavascriptの動作はここで伝えています-申し訳ありませんが、これは絶対に公開しないでください:)

<a href="javascript:alert(document.compatMode);">What mode am I?</a>
11
Steerpike

http://www.quirksmode.org/css/quirksmode.html によると:「問題は、quirksモードで記述された一部のページにdoctypeがあったということでした。したがって、各ブラウザにはdoctypeを持つ独自のリストがあります。これらのリストの概要については、このブラウザー比較チャートを参照してください: http://hsivonen.iki.fi/doctype/ "

お役に立てれば

IE Doctypeを介して)厳密であるべきだと伝えた場合、ページの途中で気が変わることはありません。

3
i_am_jorf

Quirksモードを正しく理解している場合、宣言されたdoctypeに対して検証しないページは、quirksモードをトリガーするには不十分です。正しく表示されません。

異なるブラウザが各Doctypeを処理する方法を決定するために私が見つけた最良のリソースは、 here です。

2
Bill the Lizard

Web Developer Toolbarアドオンを備えたFirefoxの場合、バーの右側にある3つのアイコンを見ることができます。左端には、現在のモードが表示されます。

2
Arieleo

IE開発者ツール(F12を押す)で表示されます。メニューに次のように表示されます:ドキュメントモード:...また、別のモードを強制することもできます。

2
Ronen Festinger

html5ページで、「<!DOCTYPE html> "ページで開始はdocument.compatMode = 'CSS1Compat'に変更できます

0
Miro