Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.open/document.write未正确清除chrome中的文档--这是chrome中的错误吗?_Javascript_Firefox_Google Chrome_Document.write - Fatal编程技术网

Javascript document.open/document.write未正确清除chrome中的文档--这是chrome中的错误吗?

Javascript document.open/document.write未正确清除chrome中的文档--这是chrome中的错误吗?,javascript,firefox,google-chrome,document.write,Javascript,Firefox,Google Chrome,Document.write,我正在通过document.write向iframe写入,然后尝试在同一iframe上覆盖文档。在FF中,这可以正常工作。但是,在chrome中,来自初始document.write的代码仍然存在,即使我用第二个document.write覆盖它 看这把小提琴: 如果您像预期的那样在FF中查看它,iframe是空白的,您实际上会得到一个“函数onLoad is not defined error”,因为在 doc.write("<html><head><script

我正在通过document.write向iframe写入,然后尝试在同一iframe上覆盖文档。在FF中,这可以正常工作。但是,在chrome中,来自初始document.write的代码仍然存在,即使我用第二个document.write覆盖它

看这把小提琴:

如果您像预期的那样在FF中查看它,iframe是空白的,您实际上会得到一个“函数onLoad is not defined error”,因为在

doc.write("<html><head><script>;" +
      "<\/script></head><body onload='onLoad()'></body></html>");
doc.write(“;”+
"");
显然没有定义onLoad函数。但是,如果您在chrome中查看同一个fiddle,iframe将显示一个黑色矩形,并且onLoad调用不会出错,它将调用之前定义的函数,就好像它仍然存在一样

有没有办法清除chrome中的文档,这样我就可以覆盖iframe的内容,而不必保存旧代码?这是chrome中的错误吗?

删除
不会取消定义它定义的任何函数


如果您想实现这一目标,您需要保留一个创建的所有全局列表,并使用
delete window.WHATEVER删除它们

是的,这是Chrome(或者更准确地说是WebKit)中的一个bug。根据规范,它应该创建一个新的窗口对象并删除所有全局事件侦听器,但它没有这样做


具体请参见步骤14。

是否有任何方法可以清除/重置窗口对象?知道为什么FF和chrome中的行为不同吗?我的理解是它应该完全重置iframe,但是你的回答很有道理。你不能使用该操作符删除某些属性。查看更多信息。你没有抓住要点<代码>文档。写入
调用<代码>文档。打开,根据规范,新窗口对象应附加到已清除的文档。请看:我认为这绝对是一个更完整的答案,直接解决了这个问题,所以我将此标记为答案。谢谢Boris,你知道这有没有公开的bug报告吗?