为什么使用document.write创建iframe“取消”所有剩余的Javascript?

时间:2010-07-09 22:10:29

标签: javascript html browser behavior

这种情况发生在所有浏览器中,因此必须有原因。

示例:

<html>
<body>
<script>var a="support/";
var aa='<iframe src="http://google.com/' + a + '" />'; 
document.write(aa)</script> 
<script>alert('test')</script>
</body>
</html>

iframe写入后的代码(在这种情况下为alert('test'))不会执行。为什么呢?

4 个答案:

答案 0 :(得分:9)

因为您正在将破碎的HTML写入文档中 - 所以没有&gt;在iframe标签上。

答案 1 :(得分:9)

您在文档中写入的HTML无效,导致浏览器无法解释文档的其余部分,包括剩余的<script>标记。

您正在撰写<iframe src="http://google.com/support/。添加"></iframe>即可。

但是,更简洁的方法是不要使用document.write(假设你有一些id =“container”的HTML元素来保存iframe):

var iframe = document.createElement('iframe');
iframe.setAttribute("src", "http://google.com/support/");
document.getElementById("container").appendChild(iframe);

答案 2 :(得分:2)

您需要关闭报价和iframe。这有效:

<html>
<body>
<script>var a="support/";
var aa='<iframe src="http://google.com/' + a + '" />';
document.write(aa)</script> 
<script>alert('test')</script>
</body>
</html>

答案 3 :(得分:0)

此代码正常,工作正常。您可以在JSFiddle Live DEMO上查看。您可以使用您的数据编辑它。

<script type="text/javascript">
var write_variable="p/about.html";
var write_iframe='<iframe src="http://www.exeideas.com/' + write_variable + '" />';
document.write(write_iframe);
</script>

或者您可以通过HTML Editor And Previewer

在线查看