我正在尝试理解在Internet Explorer6和Windows XP下运行的JavaScript密集型瘦客户机应用程序中出现的间歇性脚本错误。问题的根本原因是下面的函数调用返回了一个null值(但是它确实成功了,没有出现错误):
var doc = targetWindow.document.open("text/html","_replace");其中,targetWindow是一个window对象。
targetWindow和targetWindow.document都不是null,所以我很难理解为什么这个调用会返回null。我对the documentation的解释是这个方法永远不应该返回null。
这段代码多年来一直保持不变并完美运行--直到我理解了为什么会发生这种情况,我既不确定我该如何处理它,也不确定是什么原因导致了这种情况的发生。
什么可能会导致此函数调用返回null?
发布于 2011-09-08 10:48:09
根据文档,您应该传递"replace",而不是"_replace“。试着这样做:
var doc = targetWindow.document.open("text/html", "replace");既然你说你的代码已经工作多年了,那么很可能是某些地方发生了变化,上面的建议可能不是问题所在。然而,它仍然值得一试。
您最近是否更改了应用程序中使用的任何js文件/库?此外,您是否在页面中使用任何浏览器插件?它们中的任何一个的更新版本都可能以某种方式影响您对"document.open“的调用。
发布于 2011-09-25 09:06:52
按照W3C标准,document.open()没有任何参数。请查看此链接:http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-72161170
我建议你使用W3C文档,而不是微软的文档,因为使用W3C你肯定它可以在所有现代浏览器上工作,而微软以添加扩展而闻名,当然,这些扩展只能在他们自己的产品中工作。它被称为EEE (拥抱、延伸和熄灭)。
只需使用不带参数的document.open()。有一些方法可以操纵用户历史,但这被称为糟糕的编程实践。历史是用户的私有数据,web应用程序不应该试图操纵它。
https://stackoverflow.com/questions/7323021
复制相似问题