新しく作成したiframeに次のようにHTMLスニペットを読み込もうとしています。動的に作成されたiframeにHTMLスニペットを読み込む
<!DOCTYPE html>
<html>
<head><title>Test</title></head>
<body>
<script type="text/javascript">
var iframeId = "frame"
+ Math.floor((Math.random() + "") * 1000000000000).toString();
document.write('<iframe height="300"'
+ ' width="300"'
+ ' frameborder="0"'
+ ' scrolling="no"'
+ ' id="' + iframeId + '"'
+ ' name="' + iframeId + '"'
+ ' allowtransparency="true"></iframe>');
var iframe = document.getElementById(iframeId);
var iframeContent = '<!-- --\><script language=\"javascript\"\></script\>';
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(
'<!DOCTYPE html\><html\><head\><title\>Test</title\></head\><body\>'
+ iframeContent
+ '</body\></html\>');
iframe.contentWindow.document.close();
</script>
</body>
</html>
この文書をブラウザで開くと、iframeが正しく読み込まれません。これを引き起こしている可能性のあることについての考えはありますか?私は
var iframeContent = '<!-- --\>';
または
var iframeContent = '<script language=\"javascript\"\></script\>';
としてiFrameContentを設定した場合
ページが正しくロードするように思えます。
iframeContentは基本的にサードパーティのHTMLスニペット(freemarker js_stringを使用してエスケープされています)であり、HTMLコメントを含むことがあります。
連結するときに.toString()を呼び出す必要はありません。 Javascriptは自動的にそれを行います。 – SomeKittens