2014-02-09 41 views
1

我试图做一个有点粗广告拦截器的使用javascript 我现在有代码在网页上运行的正则表达式:如何使用JavaScript

var pattern = '<iframe(.*?)</iframe>|<object(.*?)</object>'; 

if (document.body.parentNode.innerHTML.match(pattern)) 
{ 
    document.body.parentNode.innerHTML = 
     document.body.parentNode.innerHTML.replace(pattern, '<b>AD BLOCKED</b>'); 
} 

的问题是,页面重新加载。有没有办法阻止页面重新加载? (我的主要目标是AdSense)

+0

页面重新加载或iframe? – reergymerej

+0

整个页面确实是 – user3288701

+0

另外[match()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)需要一个'RegExp'对象,而不仅仅是一个字符串。 – reergymerej

回答

1

这看起来不对,因为你只是想替换页面上的html。我无法想象会做什么。但要回答你的Regex问题,试试这个。

var pattern = /<iframe.*<\/iframe>/gi; 
document.body.innerHTML = 
    document.body.innerHTML.replace(pattern, '<strong>bye iframe</strong>'); 

replace()将换出由RegExp与第二个参数中找到的所有比赛。

/<iframe.*<\/iframe>/正则表达式IFRAME标签内匹配任何东西。 gi修改正则表达式,告诉它​​是全局的和不区分大小写的。

同样,你可能会有一些意想不到的行为,重写body的innerHTML,所以我会重新考虑你的方法。也许你可以使用jQuery来查找你不想要的标签并隐藏或删除它们。 (example here

+0

这很好用! – user3288701