javascript评估问题

javascript评估问题,javascript,Javascript,我有一个函数正在解析包含javascript函数调用的xml。这方面的一个例子是: eval(getElementText(PropValue[0])); getElementText(PropValue[0] = top.hidePopWin() 我跟随这个调用调用了hidePopWin函数,并观察它从函数的顶部到底部完成 一切看起来都井然有序,但我在Firefox中遇到了一个讨厌的错误:top为null 正如您可能猜到的,hidePopWin关闭当前显示的弹出窗口 因此,hidePop

我有一个函数正在解析包含javascript函数调用的xml。这方面的一个例子是:

eval(getElementText(PropValue[0])); 

getElementText(PropValue[0] = top.hidePopWin()
我跟随这个调用调用了hidePopWin函数,并观察它从函数的顶部到底部完成

一切看起来都井然有序,但我在Firefox中遇到了一个讨厌的错误:top为null 正如您可能猜到的,hidePopWin关闭当前显示的弹出窗口

因此,
hidePopWin
被调用,它运行得很好(事实上弹出窗口确实关闭了),但这之后就是问题所在。它不会进入下一步。我在Firefox(firebug)中得到的顶部是空消息,它只是停止

我需要提到的另一件事是,整个过程从双击事件(遗留代码)开始。还有一个单击事件也会触发。起初我认为这可能就是问题所在,但是,我去掉了对onclick事件的引用,仍然得到了相同的消息

所以我认为这与声明有关。为了了解更多信息,我在语句上方放置了一个
console.log(“1”)
,在语句下方放置了一个
console.log(“2”)
。“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语句???所以我不知道到底是怎么回事。

不知道,但是你能把代码改成在eval和test之外直接执行代码吗

所以,change,eval(getElementText(PropValue[0]); 到 top.hidePopWin()


查看是否会出现相同的错误。

否,但能否更改代码以直接在eval和test之外执行代码

所以,change,eval(getElementText(PropValue[0]); 到 top.hidePopWin()


查看是否出现相同的错误。

如果在FF中断点(在console.log('here')行上),则“top”在该范围内可见吗?听起来好像没有这样的变量(我不知道为什么弹出窗口会关闭)。

如果在FF中断点(在console.log('here'),则“top”在该范围内可见)行?听起来好像没有这样的变量(我不知道为什么弹出窗口会关闭)。

好吧……这可能不是最好的方法,但我最终还是让它工作了。根据建议将代码更改为运行top.hidePopWin()。我尝试了这些建议,但是我仍然得到了top是空的问题。

在绝望中我取出了“top”。现在它工作了。所以我猜没有“top”变量(我认为是wierd符号)

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


似乎有效。请告诉我是否有其他方法可以解决此问题。

好的……这可能不是最好的方法,但我最终还是成功了。根据更改代码以运行top.hidePopWin()的建议。我尝试了这些建议,但我仍然得到了top是空问题。

在绝望中我取出了“top”。现在它工作了。所以我猜没有“top”变量(我认为是wierd符号)

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


似乎有效。请告诉我是否有其他方法。是否有使用
eval
的特定原因?此代码解析XML文件并在节点内包含CDATA,该CDATA随后包含函数调用。我相信eval是实际处理函数调用的唯一方法。是否有特定原因您正在使用
eval
?这段代码解析一个XML文件,在节点内部包含一个CDATA,该CDATA随后包含函数调用。我相信eval是实际处理函数调用的唯一方法。