我有一个解析包含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时,它突出显示了评估声明?所以我不知道发生了什么。
有没有具体的原因是你使用'eval'? – locrizak
这段代码解析一个XML文件,并且在节点内部包含一个CDATA,然后它包含函数调用,我相信eval是实际处理函数调用的唯一方法 – webdad3