2011-07-22 42 views
0

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

eval(getElementText(PropValue[0])); 

getElementText(PropValue[0] = top.hidePopWin() 

我按照这个调用到hidePopWin功能,看着它从功能上给函数的底部完整。

一切看起来都在为了不过,我在Firefox中得到这个讨厌的错误:顶部是空 正如你可能已经猜到hidePopWin关闭当前显示的弹出窗口。

所以,hidePopWin被调用,它会经历很好(实际上弹出窗口实际上关闭),但之后是问题。它不会进入下一步。我在Firefox(firebug)中得到顶部是null消息,它只是停止。

我需要提的唯一一件事就是整个过程始于双击事件(遗留代码)。还有一个单击事件也会触发。起初我想也许是这个问题,但是,我拿出了onclick事件的参考,并且我仍然得到相同的消息。

所以我认为它与eval声明有关。只是为了获得更多信息,我在eval声明之上放置了console.log("1"),在eval之下放置了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])); 
} 

OK我尝试了上面......我看到了 “这里” 的声明,但它仍说顶部是空。 “结束”语句从不打印。当我点击最上面的是FF中的null时,它突出显示了评估声明?所以我不知道发生了什么。

+0

有没有具体的原因是你使用'eval'? – locrizak

+0

这段代码解析一个XML文件,并且在节点内部包含一个CDATA,然后它包含函数调用,我相信eval是实际处理函数调用的唯一方法 – webdad3

回答

0

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

无奈之下我拿出“顶”,现在它的作品。所以我猜有没有一个“顶”变量(奇怪,我的运算符号INION)。

所以现在我正在捕获如果字符串等于“顶部。hidePopWin()”,然后不要叫我打电话的功能hidePopWin()的EVAL;

似乎工作让我知道,如果有是要对这个另一种方式

2

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

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

看看你是否得到相同的错误。

+0

那没有工作 - 查看更新的问题 – webdad3

1

是“顶”在该范围内可见,如果你在FF断点(在执行console.log(“这里”)行?这听起来像有没有这样的变量(我不知道为什么在弹出虽然关闭)