简单的javascript警报,可以'不要在一定的时间内多次开火
Simple javascript alert that can't fire more then once in a certain amount of time?
只是想知道是否有一种简单的方法可以在某个时间段内发出一次以上的警报。我使用的只是
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/
相关文章:
- Java脚本时间添加
- Json数据包含日期和时间格式
- 如何根据时间运行不同的脚本
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 在wordpress一定时间后更改自定义字段
- 更改angularjs中的日期-时间格式
- 将当前时间添加到我的页面上的特定部分
- 门户网站:当地时间有多有用
- 显示时间的脚本
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 通过JSON&比较时间
- Javascript时间轨迹
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 高库存时期时间与时区不匹配
- Jquery如何检查今天的时间大于使用给定时间
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- primefaces日历可以禁用过去的日期和时间吗
- 我如何防止触摸端事件明显是“;记住“;然后在不适当的时间开火
- 简单的javascript警报,可以'不要在一定的时间内多次开火