2011-08-24 112 views
3

我正在研究一些使用jQuery從網頁中的HTML文檔中解析數據的代碼。做出這個決定是因爲jQuery具有在頁面上選擇對象的出色能力,因此非常適合解析。阻止jQuery()執行javascript

的代碼是這樣的(其中「html_string」是整個網頁的HTML):

var page = $(html_string); 

我遇到的問題是,JavaScript是被評估和html_string內執行爲好。這導致形成的新線程在某些情況下包含無限循環,這些循環會向服務器重複發出請求,並最終導致應用程序(而非服務器)的整個客戶端崩潰。

有沒有辦法阻止JavaScript在這種情況下執行。在這種情況下,JavaScript的執行是一個不必要的副作用。

非常感謝!

+6

這行代碼不會執行任何腳本。你的問題在別的地方。 – GolezTrol

+0

你怎麼拉HTML? – amosrivera

+1

(添加到@ GolezTrol的評論;你可以通過比較http://jsfiddle.net/UbCFc/到http://jsfiddle.net/UbCFc/1) – Matt

回答

2

這裏是一個蹩腳的小的jsfiddle,顯示你的JS當你html_string加載到$不運行。當你點擊運行時,你會看到一個即時警報'wtf'。三秒鐘後,html被加載到$並且正文被更新爲說'moo',你不應該看到警報。

http://jsfiddle.net/9BAkE/

+0

它不回答這個問題,但它確實表明問題是錯誤的。 :) – GolezTrol

1

一種方法是解析html字符串,然後用jQuery包裝它。

喜歡的東西:

var page = html_string; 


//then find the script tag (untested code) 
int beginning_of_script = page.indexOf('<script>'); 
int end_of_script = page.indexOf('</script>'); 

// remove the script 
page = page.remove(beginning_of_script, end_of_script); 
1

你可以開始這個語法加載到瀏覽器作爲評論

<script> 
/* var page = $(html_string); */ 
</script> 

再後來提取註釋的內容。這裏的優點是瀏覽器不會解析並執行頁面加載評論。

您還可以探索使用jQuery的.load()函數,不知道它是否適合您的需求。