我有一個解析包含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