IE中的空指针异常而不是Firefox,为什么会发生这种情况?

时间:2011-04-11 14:10:35

标签: javascript selenium

我有脚本循环遍历一个html标签id的数组,数组中的一些元素是空的。我有一个if语句在Firefox中工作正常但在IE中抛出空指针或不是对象错误

if((storedVars.id) != ("")){selenium.browserbot.getCurrentWindow().document.getElementById(storedVars.id).type;} 

为什么它在IE中失败而在Firefox中失败?IE的正确语法是什么?

2 个答案:

答案 0 :(得分:1)

在我看来,如果storedVars.id == null,那么无论浏览器如何,此代码都不起作用。这是因为当storedVars.id为null时,storedVars.id!=(“”)为真。也许它在IE中是空的(或者你在IE中运行的测试)而在Firefox中不是null。其根本原因可能是代码中的其他位置。假设它不是null,并假设其他对象都存在且不为null(selenium.browserbot.getCurrentWindow())并返回跨浏览器兼容的对象,则应执行此代码。

但是,据我所知,这段代码没有做任何事情。没有方法调用或赋值。有点偏离主题,但为了缓解所有这些跨浏览器的痛苦,人们通常只使用像jQuery或YUI这样的框架。

答案 1 :(得分:0)

在IE中它可能是未定义的或null而不是空字符串,所以请尝试这样做:

if(storedVars.id && storedVars.id !== "")

(由于!==运算符比较两个字符串,效率更高一些)