繁体   English   中英

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

[英]Why does using document.write to create an iframe “cancel out” all remaining Javascript?

在所有浏览器中都会发生这种情况,因此一定有原因。

例:

<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'))不会执行。 为什么?

因为您正在将损坏的HTML写入文档-iframe标记上没有>。

您写入文档的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);

您需要关闭引号和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>

这段代码可以正常工作。 您可以在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编辑器和预览器在线检查它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM