我用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源或更灵活的替换脚本中获取内容时完全忽略此脚本?
感谢任何帮助,
谢谢!
答案 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())