У меня есть setinterval, который рунирует каждые 5 секунд. это прекрасно работает при загрузке страницы.Как запустить javascript setinterval после очистки?
У меня есть следующие сценарии: стр
- нагрузки с интервалом (РАБОТЫ)
- нажмите кнопку и загрузить новое содержание и Стопп интервал (РАБОТЫ)
- После того, как новое содержание (НЕ ДЕЛАЕТ)
- У меня есть сейф tys такие как события для window.blur, которые также останавливают интервал, так что браузер не будет компрометировать все отсутствующие интервалы, если я буду менять вкладки или что-то еще. Имейте в виду, что шаг 3 не работал BUT, если после 3-го шага изменить вкладку, а затем вернуться к исходной странице (выполнить размытие), интервал снова начнет работать.
УКАЗАНИЕ все содержимое загрузка здесь кроме загрузки страницы выполняется с помощью вызовов ajax.
Мой код:
инициализацией:
$.automation.worker.bindIntervalEvent("#TanksContent", "/Tank/GetTanks", function() {
$.automation.tanks.tableInit();
});
связывающую функцию:
bindIntervalEvent: function (target, url, callback) {
$(window)
.on("focus.mine",
function() {
$.automation.worker.setUpdateInterval(target, url, callback);
})
.on("blur",
function() {
$.automation.worker.stopUpdateInterval();
}).trigger("focus.mine");
}
интервал функции:
setUpdateInterval: function (target, url, callback) {
if ($.automation.globals.globalInterval.value.length === 0) {
$.automation.globals.globalInterval.value.push(window.setInterval(
function() {
var options = {
loadTarget: target
}
$.automation.worker.getView(url,
function() {
if (callback)
callback();
},
options);
},
5000));
}
}
функция, которая останавливает интервал:
stopUpdateInterval: function() {
if ($.automation.globals.globalInterval.value.length === 0)
return;
console.log("deleting");
for (var i = 0; i <= $.automation.globals.globalInterval.value.length; i++) {
window.clearInterval($.automation.globals.globalInterval.value[i])
$.automation.globals.globalInterval.value.splice(i, 1);
console.log($.automation.globals.globalInterval.value.length);
}
}
при остановке интервала я также удалить окно привязок:
unBindIntervalEvent: function() {
$(window).off("focus.mine");
$(window).unbind("blur");
}
Назад к шагу 3:
Мой метод sucess в обратный вызов моему getviewfunction идентичен тому, что я исполняю в коде начало :
$(".updatelatest")
.on("click",
function() {
var _this = $(this);
var options = {
loadTarget:"#TanksContent"
}
$.automation.worker.getView("/Tank/GetTanks",
function (data) {
$(_this).switchClass("col-md-5", "col-md-1", 1000, function() {
$(_this).addClass("hidden");
$(".search").switchClass("col-md-5", "col-md-12", 1000, "easeInOutQuad");
})
$.automation.tanks.tableInit();
$.automation.worker.bindIntervalEvent("#TanksContent", "/Tank/GetTanks", function() {
$.automation.tanks.tableInit();
});
$(window).trigger("blur");
}, options);
});
, но это не начинается интервал. он явно инициализирован, так как он работает, когда window.blur выполняется, например, когда я меняю вкладку, но по какой-то причине это не работает за ее пределами.
Я попытался запустить событие размывания окон, и ничего не произошло, я попытался запустить мое пользовательское событие окна «focuse.mine», но ничего не происходит.
Я не замечал этого во время разработки, так как у меня открылся firebug, и каждый раз, когда я проверял скрипты или css или консоль, функция размытия выполнялась, поэтому я предположил, что мой код работает так, как планировалось, но теперь, когда он развернут, я замечаю это ,
Моя голова колотится за разум, и я не могу понять, где я ошибся.