我有一个解析包含javascript函数调用的xml的函数。一个例子是:
eval(getElementText(PropValue[0]));
getElementText(PropValue[0] = top.hidePopWin()
我已经跟着这个调用了hidePopWin函数,看着它从函数顶部到函数底部完成。
所有内容都按顺序查看但是我在Firefox中遇到了这个令人讨厌的错误: top is null 您可能已经猜到hidePopWin会关闭当前显示的弹出窗口。
所以,hidePopWin
被调用并且它经历了很好(实际上弹出确实关闭了),但之后是问题。它不会进入下一步。我在Firefox(firebug)中得到顶部为空消息,它就停止了。
我唯一需要提及的是整个过程从双击事件(遗留代码)开始。还有一个单击事件也可以触发。起初我想也许这就是问题,但是,我拿出了对onclick事件的引用,我仍然得到相同的消息。
所以我认为它与eval
语句有关。只是为了获取更多信息,我将console.log("1")
放在eval
语句上方,console.log("2")
放在eval
下方。 “1”打印,“2”不打印。
有没有人对可能出现的问题有任何想法?
更新
if(getElementText(PropValue[0]) == "top.hidePopWin();"){
console.log('here');
top.hidePopWin();
console.log('end');
}else{
console.log(getElementText(PropValue[0]));
eval(getElementText(PropValue[0]));
}
好的,我尝试了以上内容......我看到了“here”声明,但仍然说 top为null 。 “结束”语句永远不会打印出来。当我在FF中单击顶部为空时它会突出显示eval语句???所以我不知道到底发生了什么。
答案 0 :(得分:2)
不,但您可以更改代码以直接执行eval以外的代码并进行测试吗?
所以,改变,eval(getElementText(PropValue [0])); 至 top.hidePopWin();
看看你是否收到同样的错误。
答案 1 :(得分:1)
在该范围内是'top'可见吗?听起来好像没有这样的变量(我不知道为什么弹出窗口会关闭)。
答案 2 :(得分:0)
好的......这可能不是最好的方式,但我终于让它上班了。根据建议更改代码以运行top.hidePopWin()。我尝试了这些建议,但我仍然得到 top是空问题。
无奈之下,我拿出了“顶级”。现在它的工作原理。所以我猜测没有“顶级”变量(在我看来是奇怪的符号)。
所以现在我正在捕获字符串是否等于“top.hidePopWin()”然后调用eval而不是调用函数hidePopWin();
似乎工作。如果还有另一种方法可以告诉我。