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 部署,並分別針對beta
和release
分別執行手動操作Deploy popup blocker beta
和Deploy popup blocker release
版」。