如何使用JQuery删除HTML字符串中的所有“脚本”标记?

时间:2011-12-14 11:14:45

标签: javascript jquery html

假设我有一串HTML代码。我想使用JQuery从字符串中删除所有<script>标记。

我该怎么做?

注意:我想使用JQuery而不是REGEX来执行此操作。

这有用吗? $(var).find('script').remove();

4 个答案:

答案 0 :(得分:13)

这应该适合你:

var stringOfHtml = // your string here
$(stringOfHtml).find('script').remove();

要删除删除了脚本标记的新字符串:

var stringOfHtml = "<div><script></script><span></span></div>";
var html = $(stringOfHtml);
html.find('script').remove();

var stringWithoutScripts = html.wrap("<div>").parent().html(); // have to wrap for html to get the outer element

JS Fiddle Example - 不得不使用p代替脚本,因为脚本打破了小提琴,但同样的原则。

这里的实际工作答案(希望如此)

以下是脚本问题的解决方法,使用replace将脚本文本与其他内容交换(尝试使其唯一)然后删除这些新标记并再次使用替换以换回以防脚本在文本中的任何其他位置使用。是的,它确实使用了正则表达式,但没有删除脚本标签,所以我希望这没关系;):

var stringOfHtml = "<p></p><script>alert('fail');</scr" + "ipt><span></span>";
var wrappedString = '<div>' + stringOfHtml + '</div>';
var noScript = wrappedString.replace(/script/g, "THISISNOTASCRIPTREALLY");
var html = $(noScript);
html.find('THISISNOTASCRIPTREALLY').remove();

alert(html.html().replace(/THISISNOTASCRIPTREALLY/g, 'script'));

JS Fiddle Workaround

JS Fiddle Example With Script Text

答案 1 :(得分:8)

旧问题,但如果您仍在寻找从字符串中删除脚本的最简单方法,请尝试

$.parseHTML(string);  

$。parseHTML()自动从字符串中删除脚本标记。

修改

这是有效的,因为keepScripts默认值为false。 (参考:$.parseHtml

$.parseHTML(data, context, keepScripts)

答案 2 :(得分:1)

我想这应该有用

$('script').each(function () {
    $(this).remove();
});

答案 3 :(得分:0)

如果要从任何字符串中删除脚本标签,这是另一种解决方案:

var str = "<script>Content...</script>" use var afterstring = str.replace("<script>","new"); and afterstring = str.replace("<\/script>","new");
希望它对您有用!