SetInterval方法仅在onclick事件

时间:2016-09-23 07:16:41

标签: javascript notifications onclick setinterval

我最近看到了一个关于如何创建桌面通知的youtube教程,我认为将它作为提醒是一个好主意。例如,假设我希望每隔30分钟显示一个特定的提醒(作为桌面通知)。只有在单击触发按钮时才会触发此提醒。问题是,使用下面的代码,setinterval方法似乎只执行一次。如果我不包含click事件,它似乎工作正常,但是一旦我添加click事件,它就无法重复。有什么建议吗?

这是我所拥有的片段:

<a href="#" id="trigger" onclick="notifyme()">Trigger</a>

    <script type="text/javascript">

        var myVar;          
        function showalert(){
                var notify;
                notify = new Notification('Reminder!',{
                        body:'How are you?'
                    });
                    window.location = '?message=' + this.tag;
                }
    function notifyme() {
      myVar = setInterval(showalert, 5000);
}

1 个答案:

答案 0 :(得分:1)

它只运行一次,因为您使用行window.location = '?message=' + this.tag;重定向浏览器,当页面重新加载时,您必须单击锚点再次开始间隔

<a href="#" id="trigger" onclick="notifyme()">Trigger</a>

<script type="text/javascript">
  var myVar;

  function showalert() {
    var notify;
    notify = new Notification('Reminder!', {
      body: 'How are you?'
    });

  }

  function notifyme() {
    myVar = setInterval(showalert, 5000);
}

请注意,您通常需要获得显示通知的权限

function showalert() {
  var notify;
  notify = new Notification('Reminder!', {
    body: 'How are you?'
  });
}

function notifyme() {
  if (Notification.permission === "granted") {
    var myVar = setInterval(showalert, 1000);
  } else {
    Notification.requestPermission(function(permission) {
      if (permission === "granted") {
        var myVar = setInterval(showalert, 1000);
      }
    });
  }
}
<a href="#" id="trigger" onclick="notifyme()">Trigger</a>