Простое предупреждение JavaScript, которое не может срабатывать более одного раза за определенное время? - PullRequest
0 голосов
/ 13 августа 2011

Просто интересно, есть ли простой способ получить предупреждение, которое не может срабатывать более одного раза за определенный промежуток времени. Все, что я использую, это

alert(test)

Я просто не хочу, чтобы пользователи видели это предупреждение чаще, чем раз в 4 часа.

Ответы [ 5 ]

1 голос
/ 13 августа 2011
(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 часа.

0 голосов
/ 13 августа 2011
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/

0 голосов
/ 13 августа 2011

Вы должны создать функцию для проверки подобных вещей.Что-то вроде этого будет работать:

Вы можете вызывать alertLimited (тестировать) все, что хотите, но на самом деле он будет вызывать только alert () минимум раз в 4 часа.

0 голосов
/ 13 августа 2011

Отслеживайте, когда вы оповещаете, и сохраняйте это на компьютере клиента:

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, который теперь делегирует оповещения.

0 голосов
/ 13 августа 2011

Один из способов сделать это - сохранить временную метку, когда в cookie-файле произошло первое предупреждение, а затем в следующий раз, когда вы дойдете до точки, где вам нужно снова вызвать предупреждение, загрузите cookie-файл (если он есть, если это не оповещение), и проверьте, больше ли время, чем 4 часа с прошлого раза, и если это так, снова предупредите, иначе не

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...