0

コードファイルを表示する必要がある iframe があります。コードファイルには .txt 拡張子があり、コードをテキストとして表示する必要があります。これは、IE8 を除くすべてのブラウザーで完全に機能します。IE8 は、コード ファイルを HTML としてレンダリングし続けます。

    <iframe id="codeFile222" 
    width="100%" height="200px"
    marginheight="0" frameborder="0" 
    src="http://mrsbos.wikispaces.com/file/view/guessNumber.txt"
    name="codeFile222" 
    onload="autoResize('codeFile222');changeColor('codeFile222')"
    >

IE8でも機能させるために、これについて何ができるか考えてみてください

4

4 に答える 4

1

あなたが提供したリンク (mrsbos.wikispaces.com/file/view/guessNumber.txt) には、コンテンツ タイプとして text/plain が含まれているため、問題ありません。

コンテンツ タイプを確認するには、Fiddlerを使用するか、ページを右クリックして [ページ情報] など (ブラウザーによって異なります) を選択します。

私の推測では、IE はコンテンツの自動検出について賢くしようとし、<script>タグを見て、それが html であると想定します。

これらの場合、コンテンツをエンコードする必要があります。オプションで、可能であれば、ソース コードが<pre>-tags にあるサーバーから代わりに html ページを表示します。

于 2013-05-21T02:32:50.627 に答える
0

Content-TypeHTTP ヘッダーは、リソースのMIMEタイプ(Web ページ、画像、またはダウンロード) を示します。通常、HTML ページの場合、MIME タイプはtext/htmlであり、テキスト ファイルの場合、通常はtext/plainです。

サーバーはtext/plain;charset=utf-8テキスト ファイルを送信します (たとえば、+を使用してファイルのハード リロードを実行するときにFirebugの [Net] パネルに表示されるように)。ただし、Internet Explorer は、他の Web ブラウザーとは異なり、ファイル内の HTML を参照し、サーバーを推測します ( Microsoft のドキュメント)。CtrlF5

これはセキュリティに影響を与える可能性がありますが、Microsoft は (IE の動作を他のブラウザーの動作と一致させることによって) 古いサイトとの後方互換性を損なう危険を冒したくありませんでした。この場合、Internet Explorer 8 以降X-Content-Type-Options: nosniffでは HTML 検出を無効にするヘッダーがサポートされています。 . ただし、ウィキスペースなどのサイトでは、ヘッダーを送信するオプションがない場合があり、いずれにせよ、ヘッダーは Internet Explorer 6 および 7 では効果がありません。

ウィキスペースでは、提供されているソース コードの書式設定機能を使用するのがおそらく理にかなっています (ウィキテキストのヘルプ ページを参照してください)。

[[code format="javascript"]]
alert('hello, world');
[[code]]

また、コードを別のページに保存したい場合は、人々が実際に読むことになっているページからコードを含めることができます ( Wikispaces include help page )。これはトランスクルージョンと呼ばれます:

[[include page="PAGENAME"]]

それができない場合は、コードを HTML エスケープ (いくつかのテキスト置換を使用) し、. の間に挿入することをお勧めし<pre></pre>ます。次に、HTML ファイル (.htmまたはのファイル拡張子.html) をアップロードします。説明のために、HTML エスケープを行う単純な JavaScript 関数を次に示します。

function htmlEscape(text) {
    // Absolutely necessary
    text = text.replace(/&/g, '&amp;'); // Has to go first
    text = text.replace(/</g, '&lt;');

    // Not needed for your specific case, yet would be good to include
    text = text.replace(/>/g, '&gt;');
    text = text.replace(/"/g, '&quot;');
    text = text.replace(/'/g, '&#39;'); // '&apos;' is only OK in XHTML and in HTML5
    return text;
}
于 2013-05-21T04:21:59.637 に答える
0

この問題はしばらく前から存在しており、残念ながら適切な修正はありません。iframeうまくいくかもしれないことの 1 つは、Javascript を使用して 内のすべてをタグでラップすること<pre>ですが、これはちょっとしたハックです。

www.howtocreate.co.ukに問題に関する詳細情報があります。記事の本文をここに再現します。

ここでは Content-type HTTP ヘッダーについて説明していますが、IE が間違っているのは XHTML だけではありません。プレーンテキストを誤って処理することさえあります。プレーン テキストを使用していることを示すヘッダーを送信しても、IE が HTML と見なすものが含まれている場合、ヘッダーは無視され、HTML としてレンダリングされます。したがって、慎重に準備したテキスト ファイルは、ビットが欠落し、書式設定が失われた、ほとんど判読できないランイン パラグラフに変換されます。

なぜ彼らはそれをするのでしょうか? ときどき、HTML ページが Web サーバーによってプレーン テキストとして誤って提供されることがあるためです。その場合、IE はそれを HTML としてレンダリングします。これは良い考えのように思えますが、これらのページを作成している作成者は、IE でチェックすると機能しているように見えるため、ページが誤ってテキストとして提供されていることに気付いていないということです。ページが指定するコンテンツ タイプに正しく準拠しているブラウザには、そのコンテンツではなくページ ソースが表示されます。また、IE が HTML であると認識しているため、多くのテキスト ファイルが誤ってマングルされていることも意味します。

いずれにせよ、誰かが負けます。しかし、IE がテキストの Content-type ヘッダーを無視しなかった場合、作成者は問題があることに気づき、代わりにサーバーを修正します。このページはすべてのブラウザーで機能し、IE はテキスト ファイルを台無しにしません。

于 2013-05-21T03:14:08.597 に答える