установите тайм-аут для уведомления javascript

#javascript

Вопрос:

У меня есть уведомление на веб-сайте При отправке уведомления, оно отправляется сейчас. Я хочу отправить его через два часа после нажатия кнопки отправить уведомление

код

  <button onclick="bell();">send</button>
function bell() {
  function notifyMe() {
    if (!("Notification" in window)) {
      alert("This browser does not support system notifications");
    }
    else if (Notification.permission === "granted") {
      notify();
    }
    else if (Notification.permission !== 'denied') {
      Notification.requestPermission(function (permission) {
        if (permission === "granted") {
          notify();
        }
      });
    }
    
    function notify() {
      var notification = new Notification('success now', {
        icon: 'blue.svg',
      });
  

      setTimeout(notification.close.bind(notification), 3000); 
      var notification = new Notification('success 2 hours', {
        icon: 'blue.svg',
      });      notification.onclick = function () {
        window.open("INDEX.HTML");      
      };
    }
  
  }
  notifyMe();
}
 

Комментарии:

1. используйте setTimeout функцию. Читать дальше

2. Вы что — нибудь пробовали? В чем проблема?

3. хорошо, я использую его таким образом и не работаю

4. Я не думаю, что это хорошая идея-делать это с помощью JavaScript. Несколько секунд-это одно, но два часа? Как вы убедитесь, что веб-сайт все еще будет открыт в браузере клиента через два часа? Похоже, вам нужно серверное решение и запустите его с помощью своего JavaScript.

5. Хорошо, но каково решение, чтобы это случилось со мной

Ответ №1:

Вы можете использовать этот код:

 <!DOCTYPE html>
<html>
<body>
    <button onclick="bell()">Show notification</button>
    <script type="text/javascript">
        const granted = (async () => {
            let granted = false;
            if (Notification.permission === 'granted') {
                granted = true;
            } else if (Notification.permission !== 'denied') {
                let permission = await Notification.requestPermission();
                granted = permission === 'granted' ? true : false;
            }
            return granted;
        })();
        const showNotification = (msg) => {
            const notification = new Notification('success', {
                body: msg,
                icon: 'blue.svg'
            });
            setTimeout(() => {
                notification.close();
            }, 3 * 1000);

            notification.onclick = () => {
                window.focus();
            }
        }
        function bell() {
            granted amp;amp; showNotification("Hello World"); // short for if (granted) showNotification(...)
        }
    </script>
</body>
</html>