AdGuard 的 Popup Blocker 是一个用户脚本,可以阻止不同浏览器中所有不需要的弹出窗口。
适用于 Chrome、Firefox、Edge、Safari、IE10+ 等,基本上在任何支持用户脚本管理器的浏览器中。例外的是一些最古老的浏览器不支持我们使用的 API,脚本可能无法在其中完全发挥作用。
弹出窗口阻止程序不会将过滤规则方法应用于弹出窗口检测。相反,它在浏览器的本机 API 之上添加了一个附加层,用于创建弹出窗口。这样,这些 API 只能在手动输入时调用,而不能通过弹出/背后弹出脚本调用。即使网站上试图通过使用 WebRTC 或改变广告服务器来绕过常规广告拦截器,也可以阻止弹出窗口。
不言自明但很重要:如果单击会导致显示弹出窗口,则不仅会阻止弹出窗口,而且还会像没有弹出窗口一样处理初始单击。
除了实际尝试打开弹出窗口之外,页面上的其他脚本无法检测到正在使用弹出窗口阻止程序。这可以防止任何可能规避弹出窗口阻止程序的行为。
当前发布版本:https://userscripts.adtidy.org/release/popup-blocker/2.5/popupblocker.user.js
当前测试版本:https://userscripts.adtidy.org/beta/popup-blocker/2.5/popupblocker.user.js
Popup Blocker 是由开发 AdGuard 的同一团队开发的,AdGuard for Windows 可以充当用户脚本管理器。如果您是 AdGuard 用户,请转至“设置”-“扩展”-“添加扩展”,然后在其中输入所需的弹出窗口阻止程序 .js 文件 URL。这样您就可以在任何浏览器中使用它。
另一方面,Popup Blocker 是一个独立的项目,您可以将它与任何其他用户脚本管理器(例如 Greasemonkey、Tampermonkey 或 Violentmonkey)一起使用。确保您的浏览器中安装了其中之一,以便能够使用弹出窗口阻止程序(只需在地址栏中输入脚本 URL,管理器就会自动检测到)。
您可以在专用选项页面上管理列入白名单的域和静默域的列表:
要报告错误,请转到此页面并创建新问题。
您可以帮助我们将弹出窗口拦截器翻译成其他语言!我们的 Crowdin 项目向公众开放。
开发版本启用了日志记录,并覆盖了更多的浏览器 API,以内省 popup/popunder 脚本的行为。它不适合正常使用。
开发构建的单元测试在这里。
要构建项目,请按照下列步骤操作:
通过在终端中运行以下命令来安装本地依赖项:
yarn install
要构建,请在终端中运行以下命令:
$ NODE_ENV=<channel> ts-node tasks/builder --target=<target>
将channel
替换为所需的通道,可以是dev
、 beta
或release
。另外,将target
替换为所需的构建目标,可以是
userscript
– 为指定频道构建用户脚本;options
– 构建选项页面,这是一个独立页面,为用户提供管理允许和静默网站的便捷方式;tests
——构建测试;bundle
– 为指定频道构建并捆绑以上所有内容。或者,您可以以简约的方式运行以下命令:
yarn userscript-<channel>
yarn options-page
yarn tests
yarn bundle:dev
yarn bundle:beta
yarn bundle:release
如果您正在构建开发,请注意输出不会被缩小,并且将在浏览器控制台中包含日志。
Beta 和发布版本将被缩小,所有日志代码将被删除。
使用选项页面构建,通过cd
命令转到构建文件夹并运行您选择的本地服务器
yarn options-page
修改option-init.ts
中的isOptionsPage
以允许特定地址和端口。之后,确保用户脚本(例如,在 AG 中)也包含此地址和端口。
要查看选项页面,请确保 AG 过滤您的调试页面。
测试脚本的一个简单方法是访问 http://code.ptcong.com/better-js-popunder-script/
只需单击该页面上的任意位置即可获取弹出窗口,或使用特定链接获取弹出窗口/弹出窗口/选项卡等。
预期行为:新窗口被阻止,并在右上角显示通知。
选项页面通过 GitHub Pages 进行部署,并分别针对测试版和release
分别Deploy popup blocker beta
beta
和Deploy popup blocker release
版本。