替换/忽略字符串中的JavaScript

时间:2012-12-29 21:30:17

标签: javascript jquery rss

我用JQuery编写了一个小型RSS阅读器。首先是一个带有文章标题的屏幕,当点击标题时我会加载该文章的内容。问题是,它包含一些谷歌广告脚本,它将取代文章的内容并用广告填满整个屏幕。

以下脚本是我要替换或忽略的:

<script type="text/javascript"><!--
google_ad_client = "ca-pub-8356817984200457";
/* ijsselmondenieuws.nl */
google_ad_slot = "9061178822";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

所以我写了一个方法,它应该通过一个简单的替换来删除脚本:

 var replaceScript='<script type="text/javascript"><!--\n' +
'google_ad_client = "ca-pub-8356817984200457";\n' +
'/* ijsselmondenieuws.nl */\n' +
'google_ad_slot = "9061178822";\n' +
'google_ad_width = 468;\n' +
'google_ad_height = 60;\n' +
'//-->\n' +
'</script>\n' +
'<script type="text/javascript"\n' +
'src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\n' +
'</script>';



function removeADS(ads) {
    removeAD = ads.replace(replaceScript, " ");
}

但是这不起作用,我认为它也不灵活(如果它可以工作)。当脚本中的某些内容发生变化时,应用程序将再次陷入广告。有没有办法在从RSS源或更灵活的替换脚本中获取内容时完全忽略此脚本?

感谢任何帮助,

谢谢!

1 个答案:

答案 0 :(得分:1)

用正则表达式解析xml / html并不是很明智 使用dom解析器(jquery是一个漂亮的...暗示提示):

var rssContentString = '<rss version='2.0'>...',
    xmlDoc = $.parseXml(rssContentString),
    $xml = $(xmlDoc),
    helper = $('<div />'),
    result;


result = helper
    .append(
        $xml
            .find('script')
                .remove()
                .end()
    )
    .text();

<强>更新
基于新评论,因为您获得了这样的rss内容:

content:$.trim($(v).find("content").text())

您可以将此表达式修改为以下内容:

content:$.trim($(v).find("content").find('script').remove().end().text())