我正在尝试理解我在Internet Explorer 6和Windows XP下运行的JavaScript密集型瘦客户端应用程序中看到的间歇性脚本错误。问题的根本原因是以下函数调用返回null
值(但它确实成功而没有错误):
var doc = targetWindow.document.open("text/html","_replace");
其中targetWindow
是window个对象。
targetWindow
和targetWindow.document
都不是null
,因此我很难理解为什么此调用会返回null
。我对the documentation的解释是这个方法不应该返回null。
这段代码已经保持不变并且工作了很多年 - 直到我明白为什么会发生这种情况我不确定我是如何处理这个问题的,或者可能会有什么改变导致这种情况开始发生。
什么可能导致此函数调用返回null?
答案 0 :(得分:1)
根据文档,你应该传递“替换”,而不是“_replace”。试试这个:
var doc = targetWindow.document.open("text/html", "replace");
既然你说你的代码已经工作多年了,那么很可能会发生一些变化,而上述建议可能不是问题。但是,它仍然值得一试。
您最近是否更改了应用程序中使用的任何js文件/库?另外,您是否在页面中使用任何浏览器插件?这些中的任何一个版本都可能以某种方式影响您对“document.open”的调用。
答案 1 :(得分:0)
document.open()没有W3C标准的任何参数。查看此链接:http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-72161170
我建议您使用W3C文档而不是Microsoft的文档,因为使用W3C,您确信它适用于所有现代浏览器,而Microsoft以添加扩展而闻名,当然,扩展只适用于自己的产品。它被称为EEE(拥抱,延伸和熄灭)。
只需使用不带参数的document.open()。有一些方法可以操纵用户历史记录,但这被称为糟糕的编程实践。历史记录是用户的私有数据,Web应用程序不应该试图操纵它。