6

ドキュメントの <body> の内容の制御しか与えられていないという特殊な状況があります。ホストは、柔軟性を維持するために、IEをすぐに癖モードにするdoctypeを宣言していないと思います。ドキュメントに対する制御が制限されているため、IE に強制的にページを標準モードで表示させるにはどうすればよいですか?

4

3 に答える 3

4

ページの内容をJSで動的に書き換えて、doctypeを強制的に挿入しないとどうにもならないのではないかと思います。

をどの程度コントロールできるか、具体的に教えていただけます<body>か? JS/スクリプトを実行できますか?

編集:これは試みですが、IEではテストしませんでした。それはあなたにアイデアを与えるかもしれません。これdocument.write()によりouterHTMLdocument.documentElementcompatMode が CSS1Compat に変わります。

書き換え時にスクリプト ブロックを削除する必要がある場合があります。私が言ったように、私はこれを試すことを本当にお勧めしません...

http://medero.org/first-line.html

EDIT #2 :驚くべきことにIE6で動作するようです。しかし、リフレッシュすると、IE はそれを何らかの方法でキャッシュし、永続的に.document.write()ed 形式のままにします。それに対抗するには、クエリ文字列を追加します?203984234

繰り返しますが、あなたの状況がどのようなものかはわかりませんが、これがアイデアや助けになることを願っています.

EDIT #3 :私はそれを書き直してにバインドしdocument.writeましたwindow.onload。効果を確認するには、アクセスするたびに一意のクエリ文字列を追加する必要があります.write

http://medero.org/rewrite.html?f30324433322111

もっと瞬時に何かが必要な場合は、おそらく jQuery の DOM 対応関数をジャックして、ウィンドウがロードされる前に書き直すことができます。


雑記:

  • document.write視覚的に重要な場合は、が呼び出されるまで、CSS を使用して HTML ドキュメント全体を非表示にすることができます。
  • 新しく書き込まれたページにブロックが含まれないように、おそらく<script>保存する前に document.write を削除する必要があります。outerHTMLscript
于 2010-08-01T22:33:39.797 に答える
1

MSDN のドキュメントの互換性の定義に関する記事をご覧ください。X-UA-Compatibleおそらく、メタタグを書き出すとうまくいくでしょう。

于 2010-08-01T22:39:34.387 に答える
0

meder's answer に基づいて、どうにか解決できた方法は次のとおりです。

最初にメタを書き出そうとしましたX-UA-Compatibleが、うまくいきませんでした。

ドキュメントの最後(または頭の中、しかし私はそれにもアクセスできませんでした):

<script type="text/javascript">
if (navigator.appName == 'Microsoft Internet Explorer'){
    window.onload=function(){
        if (document.documentMode == 5){
            contents = document.documentElement.outerHTML;
            newdoc = document.open("text/html", "replace");
            newdoc.writeln('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'); 
            newdoc.write(contents);
            newdoc.close();
        }
    };
}
</script>

インナーifは無限ループを防ぐためです。おそらく、コード自体を関数に入れて で関数呼び出しを削除するなどして、コード自体を削除する方がよいでしょうが、それを機能させることstring.replace()ができなかったため、これで解決する必要がありました。

于 2011-12-01T15:21:18.117 に答える