每次刷新后仅显示一次通知

时间:2020-06-12 07:05:33

标签: javascript notifications

我想做的只是在允许通知后显示通知。

我现在所拥有的是,每次刷新页面后,它总是显示通知

这是我的javascript

int puts(char const* str)
{
    while(!*str) // stops on encountering null character 
    {
        char c = *str;

        // + get pixel representation of c for console, e. g 'B' for 66
        // + print this pixel representation to current console position
        // + advance by one position on console

        ++str;
    }
    return 0; // non-negative for success, could return number of
              // characters output as well...
}

即使刷新后,我该怎么做也只能发出一次通知。

1 个答案:

答案 0 :(得分:0)

您必须跟踪用户是否已经查看了通知,如果已看到,则跳过您的notifyMe函数的其余部分。例如,您可以将信息存储在localStorage中。

function notifyMe() {
  function AutoRefresh(t) {
    // passing strings to setTimeout makes me shiver
    // too many years of avoiding eval and stuff i guess :)
    setTimeout(function () { location.reload(true); }, t);
  }

  if (localStorage.getItem('userHasSeenNotification')) {
    return; // early return, exits the function
  }

  if (!('Notification' in window)) {
    alert('Notifications ... ');
    return; // early return, lets us get rid of the "else"
  }

  // Let's check whether notification permissions have already been granted
  if (Notification.permission === "granted") {
    // save seen state
    localStorage.setItem('userHasSeenNotification', 1);

    // If it's okay let's create a notification
    var notification = new Notification('{!! $myname->body !!}');
    notification.onclick = function(event) {
       event.preventDefault(); // prevent the browser from focusing the Notification's tab
       window.open('http://localhost:8000/spektra/spektra-memberikan-aneka-tawaran-di-jakarta-fair-kemayoran-2018', '_blank');
    };
    return; // ... again ...
  }

  // Otherwise, we need to ask the user for permission
  if (Notification.permission !== "denied") {
    // save seen state
    localStorage.setItem('userHasSeenNotification', 1);

    Notification.requestPermission().then(function (permission) {
      // If the user accepts, let's create a notification
      if (permission === "granted") {
        var notification = new Notification('{!! $myname->body !!}');
        notification.onclick = function(event) {
          event.preventDefault(); // prevent the browser from focusing the Notification's tab
          window.open('http://localhost:8000/spektra/spektra-memberikan-aneka-tawaran-di-jakarta-fair-kemayoran-2018', '_blank');
        };
      }
     });
   }
 }
}

提示:您可能希望将最后一个localStorage.setItem调用移到传递给.then(function (permission) { ... })的回调中。