0

JavaScript で動的に作成され、<script>タグを使用して別の Web サイトに追加されるフォームを作成しました。

この別の Web サイトで使用されている doctype<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">は、quirks モードを使用しています。

これを考慮してフォームを作成したところ、Chrome、Firefox、IE 10 ではすべて正常に動作しています。ただし、IE 9 以前でテストすると、フォームがまったく表示されません。開発者ツールを開くと、IE 10 では新しい quirks モードが使用されていますが、IE 9 以前では IE5 の Quirks モードが使用されていることがわかります。

IE 9 以前を使用している場合、新しい quirks モードを使用してこのページを表示できるかどうか疑問に思っていました。これが不可能な場合は、標準モードを強制したいと思いますが、IE 9 以前を使用している場合にのみ、他のすべてのブラウザーでクワークを使用し続けます。

html5 doctype は使用できません。なぜなら、彼らの Web サイトは標準ではなく quirks モードで構築されており、この doctype を使用するとデザインがすべて壊れてしまうからです。

4

1 に答える 1

2

ページがロードされると、モードを変更することはできません。また、プログラムで変更することはできません。ページを強制的に互換モードにする唯一の方法は、有効な doctype なしで、または HTML に深刻なバグがあるページをロードすることです。

doctype があるのに、ページがまだ quirks モードで読み込まれている場合は、HTML に重大なバグがあることを意味します。これは、単なる癖モードよりも大きな問題を引き起こします。これらのバグは確実に修正する必要があります。どうしてもquirks モードを使用したい場合は、doctype を削除してください。ただし、doctype を使用しても quirks モードをトリガーするほど悪い HTML コードを使用しないようにする必要があります。

W3C バリデーターを使用して、HTML を検証してこれらのバグを見つけることができます。

実行時に IE10 の 2 つの異なる互換モード間でページを切り替えるという点では、単純な答えは、それができないということです。

申し訳ありません。

しかし、正直なところ、おそらくそれが最善です。とにかく、癖モードを使用することは完全な災害です。レイアウト モードを変更するだけではありません。また、ブラウザの機能のほとんどをオフにします (つまり、1998 年以降に発明されたほとんどすべての機能)。

しかし、良いニュースがあります:

幸いなことに、Quirks モードからの切り替えは、思ったよりもずっと簡単です。

主なレイアウトの問題 (異なるボックス モデル) は、CSS の先頭に以下を追加することで修正できます。

*{box-sizing:border-box;}

これは、ボックス モデルを quirks-mode スタイル レイアウトに設定する標準に準拠した方法です。quirks モードから標準モードに切り替えることによって発生するレイアウトの破損の問題のほとんどは、このシンプルな CSS スタイルで解決できます。

他にも癖がありますが、それらは比較的マイナーなものであり、主要な問題を修正すれば対処するのは難しくありません。それらの多くは、実際には quirks モードの問題ではなく、元のコーダーがハッキングしなければならなかった古い IE バージョンのバグです。quirks モードに固執したとしても、これらが将来のバージョンでも同じように動作し続けるという保証はありません。

要約すると、次のようになります。

  1. 標準モードで読み込まれるようにページを修正します。有効な doctype と有効な HTML。
  2. box-sizingスイッチによって引き起こされるメイン レイアウトのグレムリンを軽減するために使用します。
  3. 残りのレイアウトの問題を手動で修正します。

それは思ったよりも実際にははるかに少ない作業です。本音。

于 2013-08-19T14:29:58.677 に答える