javascript eval问题

时间:2011-07-22 20:43:27

标签: javascript

我有一个解析包含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语句???所以我不知道到底发生了什么。

3 个答案:

答案 0 :(得分:2)

不,但您可以更改代码以直接执行eval以外的代码并进行测试吗?

所以,改变,eval(getElementText(PropValue [0]));  至  top.hidePopWin();

看看你是否收到同样的错误。

答案 1 :(得分:1)

如果在FF中断点(在console.log('here')行上,

在该范围内是'top'可见吗?听起来好像没有这样的变量(我不知道为什么弹出窗口会关闭)。

答案 2 :(得分:0)

好的......这可能不是最好的方式,但我终于让它上班了。根据建议更改代码以运行top.hidePopWin()。我尝试了这些建议,但我仍然得到 top是空问题。

无奈之下,我拿出了“顶级”。现在它的工作原理。所以我猜测没有“顶级”变量(在我看来是奇怪的符号)。

所以现在我正在捕获字符串是否等于“top.hidePopWin()”然后调用eval而不是调用函数hidePopWin();

似乎工作。如果还有另一种方法可以告诉我。