简单的javascript警报,可以'不要在一定的时间内多次开火

Simple javascript alert that can't fire more then once in a certain amount of time?

本文关键字:时间 开火 警报 javascript 可以 简单      更新时间:2023-09-26

只是想知道是否有一种简单的方法可以在某个时间段内发出一次以上的警报。我使用的只是

alert(test)

我只是不希望用户在4小时内多次看到此警报。

(function() {
  var _alert = window.alert,
      queue = [];
  window.alert = function(msg) { 
      queue.push(msg);
  }
  setInterval(function() {
    if (queue.length !== 0) {
      _alert(queue.pop());
    }
  }, 1000 * 60 * 4);
})();

您可能希望实现每4小时以不同方式调用一次以上的效果。

跟踪您何时发出警报并将其保存在客户端计算机上:

function doAlert(text) {
    if(!localStorage['last_alert'] || new Date - localStorage['last_alert'] > 4 * 60 * 60 * 1000) {
        localStorage['last_alert'] = +new Date;
        alert(text);
    }
}

并使用doAlert而不是现在委派警报的alert

实现这一点的一种方法是将第一个警报发生的时间戳存储在cookie中,然后在下次到达需要再次调用警报的点时加载cookie(如果有,如果没有警报(,并检查自上次以来时间是否大于4小时,如果再次发出警报,否则不要

您必须制作一个函数来测试这种东西。类似的东西会起作用:

您可以随心所欲地调用alertLimited(test(,但它实际上至少每4小时才调用alert((一次。

var alertLimited = function () {
    var lastAlertTime = 0;
    return function alertLimited(input) {
        var current = new Date();
        current.setHours(current.getHours() - 4);
        if ((current - lastAlertTime) > 0) {
            lastAlertTime = new Date();
            alert(input);
        }
    };
}();
var lastShown = new Date(1900, 1, 1);  // initialize
function showMsg(msg) {
    var minTime = 4 * 60 * 60 * 1000;  // 4 hrs seconds (set this to however long you want)
    var now = Date.now();
    if (now - lastShown < minTime) return;  // just return if not enough time has elapsed
    lastShown = now;
    alert(msg);
}

此处的工作示例:http://jsfiddle.net/jfriend00/xUWf5/