阻止弹窗的脚本

3

AdBlock有时无法阻止弹出窗口,因此我想使用Greasemonkey和jQuery编写自己的弹出窗口拦截器。

是否有一种方法可以拦截点击事件并检测是否要打开弹出窗口?

$('.popupLauncher').each(function(){
    if( /* $(this) will open a popup */ ){
        return false;
    }
});

我该用什么替换/* $(this) will open a popup */

不可靠。if ($(this.).attr("onclick").indexOf('open') !=-1) 在某些情况下可能有效。将正则表达式添加到广告拦截器中将需要更少的时间。 - mplungjan
1个回答

1

如何使用JavaScript打开弹出窗口?

window.open(url, etc, etc, etc);

理论上,您可以重写window.open函数以执行其他操作而不是打开弹出窗口。

window.open = null;

然而,如果在调用时window.open未定义,则可能会破坏页面脚本。 因此,我认为最好的方法是:

window.open = function(){
   return;
}

我还没有测试过这段代码,但是理论上应该可以工作。


1
一个弹出窗口可以通过<a href="..." target="_window">或类似的方式打开,不是吗? - user1046334
1
这种情况发生在您点击广告时。但是,如果您单击指向视频的普通链接,那么除了使用window.open打开弹出窗口播放视频之外,没有其他方法。 - Pierre
1
从技术上讲,可以省略 return; 以使代码更短(效果相同)。 - user1046334

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接