繁体   English   中英

防止jQuery()执行javascript

[英]Prevent jQuery() from executing javascript

我正在研究一些使用jQuery解析来自Web的html文档中的数据的代码。 之所以做出这个决定是因为jQuery具有在页面上选择对象的强大功能,因此非常适合解析。

代码就像这样(其中'html_string'是整个网页的html):

var page = $(html_string);

我遇到的问题是javascript也在html_string中进行评估和执行。 这导致形成新线程,在某些情况下,包含无限循环,这些循环会向服务器发出重复请求,并最终导致应用程序(而不是服务器)的整个客户端崩溃。

有没有办法以某种方式阻止在这种情况下执行javascript。 在这种情况下,执行javascript是一种不必要的副作用。

非常感谢!

这是一个糟糕的小jsfiddle,它向您显示当您将html_string加载到$时js不会运行。 单击“运行”后,您将看到“wtf”的即时警报。 三秒钟后,html被加载到$并且正文更新为'moo',你不应该看到警报。

http://jsfiddle.net/9BAkE/

一种方法是解析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);

您最初可以将此语法作为注释加载到浏览器中

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

然后在以后提取评论的内容。 这里的优点是浏览器不会解析并执行页面加载的注释。

您还可以使用jQuery的.load()函数进行探索,不确定它是否符合您的需求。

如果你不小心有一个额外的元素,检查这个! http://jsfiddle.net/UbCFc/4/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM