3

マルチフレームレイアウトがあります。フレームの 1 つに、XMLHttpRequest を介して送信するフォームが含まれています。document.write() を使用してフレームをフォームで書き換え、追加する新しいページに javascript が含まれている場合、IE6 で javascript が実行されませんか?

例えば:

document.write("<html><head><script>alert(1);</script></head><body>test</body></html>");

上記の場合、ページ コンテンツは test に置き換えられますが、alert() は実行されません。これは Firefox で問題なく動作します。

上記の問題の回避策は何ですか?

4

6 に答える 6

1

<script>回避策は、Callback関数でJavaScriptのヘッドDOM要素にブロックをプログラムで追加するか、eval()メソッドを呼び出すことです。これは、IE6でこれを機能させる唯一の方法です。

于 2008-09-16T05:47:38.080 に答える
1

JSコードを公開する代わりに、関数で囲みます(「」と呼びましょうdoIt)。フレームウィンドウ(名前が「formFrame」であるとしましょう)には、JSコードを実行できる親ウィンドウがあります(表示されていない場合でも)。そのスコープで実際のフレーム書き換え操作を実行します。

window.parent.rewriteFormFrame(theHtml);

rewriteFormFrameウィンドウの関数は次のようになります。

function rewriteFormFrame(html) {
    formFrame.document.body.innerHTML = html;
    formFrame.doIt();
}
于 2008-10-01T21:27:32.307 に答える
0

要するに:あなたは本当にそれをすることはできません。ただし、jQueryなどのJavaScriptライブラリは、まさにそれを行う機能を提供します。これに依存している場合は、jQueryを試してみてください。

于 2008-10-01T21:14:58.220 に答える
0

スクリプトを動的に評価および/または実行することは悪い習慣です。非常に悪い習慣。非常に、非常に、非常に悪い習慣。私は十分に強調することはできません、それがどれほど悪い習慣であるか。

AKA.:悪いデザインのようですね。もう一度解決しようとしている問題は何ですか?

于 2008-10-01T21:24:27.667 に答える
0

もう1つの可能な代替手段は、JSONを使用して、ブラウザーによって自動的に処理されるスクリプト参照を動的に追加することです。

乾杯。

于 2008-09-16T05:48:54.473 に答える