Greasy Fork

Greasy Fork is available in English.

Notifier

1

当前为 2023-12-02 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/478724/1289427/Notifier.js

'use strict';

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

const notify = (() => {
    const open = (typeof GM_openInTab === "function") ?
          GM_openInTab : (uri) => window.open(uri, "_blank");

    const ver = GM_info.version;
    const handler = GM_info.scriptHandler;

    if (handler === "Violentmonkey" && ver >= "2.15.4") {
        const V2_15_4 = (opti) => {
            const noti = GM_notification({
                onclick: () => (open(opti.url), noti.remove()),
                ...opti
            });
            return noti;
        };
        if (ver > "2.16.1") // v 2.16.1 has some bugs
            return (opti) => {
                opti.zombieUrl = opti.url;
                opti.zombieTimeout = 2147483647;
                return V2_15_4(opti);
            };
        return V2_15_4;
    } else if (handler === "Tampermonkey" && ver >= "5.0")
        return GM_notification;
    else return (() => {
        return ({text, title, image, silent, tag, url: uri, ondone}) => {
            Notification.requestPermission();
            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), noti.close());
            noti.onclose = ondone;
            return {remove: () => noti.close()};
        }
    })();
})();