2011-08-24 94 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()函数,不知道它是否适合您的需求。