相关疑难解决方法(0)

在浏览器环境中拦截HTML5 Web通知

我想拦截HTML5 Web通知。我已经阅读了以下答案,其中用户建议可以window.Notification用您自己的充当代理的对象覆盖该对象。我试图这样做,但是无法使其正常工作。以下是页面加载后我要注入的JavaScript代码:

function setNotificationCallback(callback) {

    const OldNotify = window.Notification;
    OldNotify.requestPermission();

    const newNotify = (title, opt) => {
        callback(title, opt);
        return new OldNotify(title, opt);
    };
    newNotify.requestPermission = OldNotify.requestPermission.bind(OldNotify);
    Object.defineProperty(newNotify, 'permission', {
        get: () => {
            return OldNotify.permission;
        }
    });

    window.Notification = newNotify;
}
function notifyCallback(title, opt) {
    console.log("title", title); // this never gets called
}

window.Notification.requestPermission(function (permission) {
    if (permission === "granted") {
        setNotificationCallback(notifyCallback);
    }
})
Run Code Online (Sandbox Code Playgroud)

html javascript browser web web-notifications

5
推荐指数
1
解决办法
287
查看次数

标签 统计

browser ×1

html ×1

javascript ×1

web ×1

web-notifications ×1