我有一種情況,我必須在Javascript中使用eval
。是的,我知道這是邪惡的,但在這種情況下,它是必需的,因爲兩個必備條件:javascript eval內在限制?
- Javascript代碼很大。
- 它只能在少數情況下被評估(和下載),所以我不希望腳本總是被下載,而是按需下載。
有了這些必要條件,我寫了一個XMLHttpRequest來請求代碼(600 + K),並且我想要評估該代碼是否立即生效。正如我稍後會顯示的那樣,該腳本僅包含要插入兩個變量的數據。問題是評估這個JavaScript失敗總是出現語法錯誤。如果我把代碼逐字(沒有評估),代碼執行得很好。這是最簡單的例子。我有一個search.js
文件是這樣的:
// search.js for functional mind. Generated statically
// from the set of posts.
posts = { 'postlist' : ['<a href="XXX">YYY</a>', 'other link...' ] };
posts_for_word = { 'word1' : [0,1], 'word2' : [Z,K] };
最後一個變量,posts_for_word
包括包含這個詞的帖子的指標。
// global environment
var posts = {}; // Initial value, empty
var posts_for_word = {}; // same
function() {
var request = // create XMLHTTPREQUEST request
var response = // obtain response (the javascript)
eval(response); // <- syntax error
// access posts or posts_for_word
posts.postlist[ posts_for_word['word1'][0] ]
....
}
的問題:
- 當我評估與EVAL上面顯示的JavaScript,火狐告訴我,這是不好的形成在第一線的時候我評估是一個和Javascript裏面的eval問題就來了。
- 然後我刪除了評論。我認爲eval會評估它,如果它是一個正常的Javascript程序,但它似乎並不接受評論(爲什麼?)。
- 刪除評論後,代碼工作,但Firefox的JavaScript控制檯仍然告訴我,第一行(定義JSON第一個變量)中存在語法錯誤。爲什麼?
當需要加載JavaScript的通常方式是插入一個新的腳本標籤到DOM中。有沒有理由爲什麼這不適合你的情況? – cobbal
@cobbal,我先試了一下。我那時可能做錯了什麼。我會再試一次,但它不起作用(我插入了腳本,但在下一個javascript行中找不到變量)。無論如何,「eval」的問題仍然存在。 –