您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Filter out browser notifications by title or body of the notification. Edit script configuration before use, and backup script before updating.
// ==UserScript== // @name Browser Notification Filter // @namespace https://greasyfork.org/en/users/85671-jcunews // @version 1.0.2 // @license GNU AGPLv3 // @author jcunews // @description Filter out browser notifications by title or body of the notification. Edit script configuration before use, and backup script before updating. // @match *://*/* // @grant none // @run-at document-start // ==/UserScript== ((orgNotif, whitelistMode, keywordBlacklist, keywordWhitelist) => { //===== CONFIGURATION BEGIN ===== //If whitelistMode is false, keywords is a list of blacklisted words. i.e. block only if matched //If whitelistMode is true, keywords is a list of whitelisted words. i.e. allow only if matched whitelistMode = false; keywordsTitle = /badtitle|badcategory/i; keywordsBody = /unwanted|badword/i; //===== CONFIGURATION END ===== function dummy(){} window.fakeNotif = function(title, opts) { this.title = title; if (opts) Object.keys(opts).forEach(function(k) { this[k] = opts[k]; }, this); if (!this.timestamp) this.timestamp = (new Date()).getTime(); }; fakeNotif.prototype.close = dummy; fakeNotif.prototype.addEventListener = dummy; fakeNotif.prototype.removeEventListener = dummy; orgNotif = Notification; Notification = function(title, opts) { var matched; if (opts) { matched = keywordsTitle.test(title) || keywordsBody.test(opts.body); } else matched = keywordsTitle.test(title); if ((matched && !whitelistMode) || (!matched && whitelistMode)) return new fakeNotif(title, opts); return new orgNotif(title, opts); }; Object.defineProperty(Notification, "permission", { get: function() { return orgNotif.permission; } }); Notification.requestPermission = orgNotif.requestPermission; })();