Как я могу исправить проблемы setInterval, когда вкладка неактивна? - PullRequest
0 голосов
/ 16 февраля 2012

Я изучаю jQuery, написав плагин для слайд-шоу, который я выпущу для всех, кто сможет его использовать, если он окажется удачным. У меня хорошее начало, но я столкнулся с проблемой. Если вы переключаете вкладки, а затем возвращаетесь на страницу, на которой он включен, время все испорчено. Я видел этот вопрос , который касается того же, но я не знаю, как применить ответ к моей конкретной ситуации.

  1. Итак, как я могу исправить ошибку переключения вкладок SetInterval? Видно здесь путем переключения вкладок: http://jsfiddle.net/8FkYj/
  2. High-Five для любых предложений по улучшению кода.

Вы можете просмотреть и скачать слайд-шоу здесь: http://kthornbloom.com/slydeshow/ или посмотреть JSFiddle: http://jsfiddle.net/8FkYj/

(Извините за код js новичка! Я по крайней мере попытался прокомментировать вещи)

1 Ответ

5 голосов
/ 16 февраля 2012

Вы можете привязать событие остановки к $ (window) .blur, а событие запуска к $ (window) .focus, чтобы таймер останавливался, когда вкладка неактивна.

Что-то вроде:

var interval_id;
$(window).focus(function() {
    if (!interval_id)
        interval_id = setInterval(slide, 1000);
});

$(window).blur(function() {
    clearInterval(interval_id);
    interval_id = 0;
});
...