Как переопределить JavaScript веб-API-объект уведомления
У меня есть сценарий, где мне нужно включать и выключать уведомления для веб-страницы, которая загружается в веб-просмотр внутри электронного окна. Чтобы сделать это, я вставил файл предварительной загрузки в веб-представление, которое переопределяет объект уведомления следующим образом.
window.oldNotification = window.Notification;
window.Notification = function() {
let notificationEnabled = localStorage.getItem('notification-permissions') === 'true';
if (notificationEnabled) {
new window.oldNotification(...arguments);
}
};
Я включаю и отключаю уведомления путем изменения локальной переменной хранения.
Проблема в том, что веб-страница, которой я хочу управлять, использует Notification.permission
метод (см. это). Теперь у моего нового объекта Уведомления нет свойства разрешения. Я не могу переопределить объект Notification таким образом, чтобы я мог обновить его конструктор, чтобы я мог отключить уведомление, а также иметь другие свойства исходного объекта Notification.
Есть ли способ достичь этого или это вообще невозможно? Любая помощь или предложение абсолютно приветствуются.
0 ответов
Вы можете легко эмулировать API уведомлений
window.Notification = function() {
const notificationEnabled = Notification.permission === 'granted';
return notificationEnabled ? new window.oldNotification(...arguments) : {};
};
Object.defineProperty(Notification, 'permission', {
get() {
return localStorage.getItem('notification-permissions') === 'true' ? 'granted' : 'denied';
}
});
Notification.requestPermission = (callback) => {
if (typeof callback === 'function') {
callback(Notification.permission);
}
return Promise.resolve(Notification.permission);
};