Notify

2023/10/30 12:46:42

目前为 2023-10-31 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/478724/1273292/Notify.js

// ==UserScript==
// @name        Notify
// @namespace   Violentmonkey Scripts
// @grant       GM_notification
// @grant       GM_info
// @version     0.1
// @author      -
// @description 2023/10/30 12:46:42
// ==/UserScript==
'use strict';

if (typeof Notification !== "function") throw Error("Not Support yet!");
Notification.requestPermission();

const notify = (() => {
    const open = (typeof GM_openInTab === "function") ?
          GM_openInTab : (uri) => window.open(uri, "_blank");
    const classic = (() => {
        return ({text, title, image, silent, tag, url: uri, ondone}) => {
            const options = {
                body: text,
                silent, tag,
                data: {uri},
                icon: image,
            };
            if (!!tag) options.renotify = true;
            const noti = new Notification(title, options);
            noti.onclick = () => (open(noti.data.uri), noti.close());
            noti.onclose = ondone;
            return {remove: () => noti.close()};
        }
    })();
    const ver = GM_info.version;
    const handler = GM_info.scriptHandler;
    const V2_15_4 = (opti) => {
        const noti = GM_notification({
            onclick: () => (open(opti.url), noti.remove()),
            ...opti
        });
        return noti;
    };
    if (handler === "Violentmonkey")
        if (ver > "2.16") return (opti) => {
            opti.zombieUrl = opti.url;
            opti.zombieTimeout = Number.MAX_SAFE_INTEGER;
            return V2_15_4(opti);
        };
        else if (ver >= "2.15.4") return V2_15_4;
        else return classic;
    else if (handler === "Tampermonkey" && ver >= "5.0") return GM_notification;
    else return classic;
})();