2008-09-16 12 views
3

私はマルチフレームレイアウトです。フレームの1つにXMLHttpRequestを使用して送信するフォームが含まれています。今、私はdocument.write()を使用してフレームをフォームに書き直し、追加している新しいページにjavascriptが含まれていれば、javascriptはIE6でエクスプレッションされていませんか?例えばdocument.write()でJavaScriptを作成して実行するにはどうすればよいですか?

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

上記の場合ページの内容は、試験で置換されているが、警告()が実行されません。これはFirefoxで正常に動作します。

上記の問題を回避するにはどうすればよいですか?

答えて

1

回避策は、コールバック関数でJavaScriptのhead DOM要素に<script>ブロックをプログラムで追加するか、eval()メソッドを呼び出すことです。これはIE 6でこの作業を行うための唯一の方法です。

0

もう1つの方法として、JSONを使用してブラウザで自動的に処理されるスクリプト参照を動的に追加する方法があります。

乾杯。

+0

もっと詳しく説明できますか?私はこれがうまくいくとは思っていませんが、多分私はちょうどあなたが示唆していることを理解していない。 – SpoonMeiser

0

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

0

スクリプトを動的に評価したり実行したりするのは悪い習慣です。非常に悪い習慣。非常に、非常に、非常に悪い練習。私は十分にストレスを感じることはできません。

AKA:悪いデザインのようです。どんな問題をもう一度解決しようとしていますか?

1

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

親ウィンドウ内 rewriteFormFrame関数は次のようになります
window.parent.rewriteFormFrame(theHtml); 

function rewriteFormFrame(html) { 
    formFrame.document.body.innerHTML = html; 
    formFrame.doIt(); 
} 
0

あなたはbodyタグ(<body onload="jsWrittenLoaded()">)でのonload属性を使用することができます。

関連する問題