Подтвердить что ты не робот

Firefox не показывает уведомления на рабочем столе, если одновременно отправляется несколько экземпляров

Я пытаюсь реализовать настольные уведомления для моего приложения. Он работает нормально, если отправлено одно уведомление, однако, если отправлено более одного уведомления одновременно, Firefox не отображает ни одного из них. Эта проблема не существует с Chrome.

Это то, что просто невозможно с Firefox? У меня сложилось впечатление, что использование тегов внутри параметров уведомлений использовалось для составления уведомлений.

Код:

function isNewNotificationSupported() {
  if (!window.Notification || !Notification.requestPermission) return false;
  if (Notification.permission == "granted") throw new Error("");
  try {
    new Notification("");
  } catch (e) {
    if (e.name == "TypeError") return false;
  }
  return true;
}

function notifyMe(aa, bb, cc, dd) {
  if (!("Notification" in window)) {
    //alert("This browser does not support desktop notification");
  } else if (Notification.permission === "granted") {
    if (!document.hasFocus() || cc == 1) {
      var options = {
        body: bb,
        icon: "",
        dir: "ltr",
        tag: dd
      };
      var notification = new Notification(aa, options);

      notification.onshow = function() {
        setTimeout(notification.close.bind(notification), 15000);
      };
    }
  } else if (Notification.permission !== "denied") {
    if (isNewNotificationSupported()) {
      Notification.requestPermission(function(permission) {
        if (!("permission" in Notification)) {
          Notification.permission = permission;
        }

        if (permission === "granted") {
          var options = {
            body: bb,
            icon: "",
            dir: "ltr",
            tag: dd
          };
          var notification = new Notification(aa, options);

          notification.onshow = function() {
            setTimeout(notification.close.bind(notification), 15000);
          };
        }
      });
    }
  }
}

notifyMe("New notification1","newtest","1","test1");
notifyMe("New notification2","newtest2","1","test2");

Я создал jsfiddle для этого на:

http://jsfiddle.net/1bm0wyvf/

Обновление: я думаю, что я решил это сейчас, изменив один из notifyMe на:

setTimeout(function() { notifyMe("Newnotification1","newtest","1","test1"); }, 200);

Firefox теперь правильно складывает их.

4b9b3361

Ответ 1

Я использую следующую функцию, и она очень хорошо работает в Firefox/Linux.

function notif(message){

 if (Notification.permission !== 'denied') {
    Notification.requestPermission(function (permission) {
      if (!('permission' in Notification)) {
        Notification.permission = permission
      }
      if (permission === "granted") {
          let notification = new Notification(message)
      }
    })
  }
}
notif("Hello world!!")

enter image description here