如何自定义浏览器推送通知的样式

时间:2017-11-08 14:45:17

标签: html css html5 notifications

我正在使用Angular 4创建一个应用程序,它应该不时收到推送通知。我已设法显示通知,但我无法自定义其样式及其内容。

我正在寻找的是一种改变通知背景颜色的方法,这样我就可以让它们眨眼以引起用户的注意。

这是我的代码:

  public showNotification(title: string, text: string): Notification {
    // Check if notifications are supported
    const notificationOptions = {
      body: `<div style="color:red"><p>${text}</p></div>`,
      icon: 'assets/img/logo_onyo-simples.png',
      badge: 'assets/img/logo_onyo-simples.png',
      vibrate: [200, 100, 200]
    };

    try {

      // Throws an exception if the browser doesn't support a notification.
      const notification = new Notification(title, notificationOptions);
      notification.onclick = (e: any) => {
        window.focus();
        notification.close();
      };

      return notification;
    }
    catch (e) {
      if (e.name === 'TypeError') {
        this.raven.captureBreadcrum({
          message: 'This browser does not support notifications',
          level: 'warning',
          category: 'notification'
        });
      }
      else {
        this.raven.captureException(e);
        throw e;
      }
    }
  }

我已尝试将测试HTML标记添加到通知正文中,但这并不起作用。有没有办法做到这一点?

注意:原因是因为我没有使用Toastr通知,因为我希望用户即使浏览器已最小化或在其他应用程序后面也会收到我的通知。

注2:以下是我正在使用的通知类型示例:https://tests.peter.sh/notification-generator/

1 个答案:

答案 0 :(得分:0)

我相信你想做的事情是不可能的,至少是according to the spec。没有属性或方法来传递/设置视觉呈现。

我在这里推测,但可能是因为浏览器供应商想要完全阻止您尝试创建的行为类型。也许你可以设计出具有良好品味和设计的通知。然而,这也将为人们打开通向恶意,烦人和直接掠夺性通知的大门。它会打开黑暗模式的大门。

虽然,未来可能会增加这种风格灵活性。我只是不这么认为。