2

Safari 3.0.x は、document.compatMode プロパティをサポートしていないため、ドキュメントが標準モードでレンダリングされているか、互換モードでレンダリングされているかを検出できません。Safari 3.1 以降ではサポートされています。document.compatMode が利用できない場合、Safari 3.0.x でドキュメント モードを検出するにはどうすればよいですか?

4

2 に答える 2

3

Googleで簡単に検索すると、「ドキュメントの互換性モードを確認する方法」が表示されます。

基本的にdiv、quirks モードでのみ機能する無効な css スタイルで を作成します。次に、 newdivのスタイルをチェックして、css が受け入れられたかどうかを確認します。受け入れられた場合、ドキュメントは quirks モードになります。

コードを言い換えると:

var el = document.createElement('div');
el.style.cssText = 'position:absolute;width:0;height:0;width:1';
var compatMode = el.style.width === '1px' ? 'BackCompat' : 'CSS1Compat';

これをテストしますが、Safari を実行できません。可能であればテストして、結果をコメントで報告してください。

于 2009-10-16T06:34:15.063 に答える
2

ほとんどの新しいブラウザにはがありますがcompatMode、一部の古いブラウザにはありません。このようなブラウザには、デスクトップの Safari 2 や多くの Nokia 携帯電話など、Mac IE や古い WebKit が含まれます。

存在する場合document.compatModeは、値が でないことを確認します"BackCompat"。その場合、ドキュメントは標準モードになっています。これにより、IE の初期の結果が得られます。

それ以外の場合は、標準モードのレンダリングをサポートしている可能性がある古いブラウザーですが、プロパティdocument.compatModeがありません。compatMode

幅を設定するための数値を持つ要素を設定する場合width、ドキュメントは標準モードではありません。

if - else読みやすい場合は使用できます。または、代わりに 3 項代入を使用します。

/* 2010-06-26 ギャレット スミス - BSD ライセンス */
関数 isQuirksMode(doc) {
  ドキュメント = ドキュメント || 資料;
  var compatMode = doc.compatMode,
      テストスタイル、
      IS_STANDARDS_MODE = compatMode ? compatMode != "BackCompat" :
      doc.createElement && ((testStyle = doc.createElement("p").style).width = "1",
       !testStyle.width);
  !IS_STANDARDS_MODE を返します。
}

これは、世界中の国の Nokias などのモバイル デバイスに存在する可能性のある古い Webkit バージョンに対応しています。

IE5.5 以下では true を返します。createElementcreateElement が壊れているブラウザ (Opera 5 だと思います) では、存在推論チェックは失敗します。

この関数を使用して一般的な推論を行うことは避けてください。できるだけ具体的にするよう常に心がけてください。

于 2010-06-27T07:03:28.030 に答える