如果选项卡处于非活动状态,如何修复setInterval问题?

kth*_*oom -1 jquery setinterval

我正在通过编写幻灯片插件来学习jQuery,如果结果很好,我将发布给任何人使用.我有一个良好的开端,但遇到了一个问题.如果你切换标签,然后回到它打开的页面,时间就搞定了.我已经看到这个问题涉及同样的事情,但我不知道如何将答案应用于我的特定情况.

  1. 那么,我该如何修复SetInterval选项卡切换错误?通过切换标签看到这里:http://jsfiddle.net/8FkYj/
  2. 有关代码改进的任何建议的高五.

您可以在此处查看和下载幻灯片:http://kthornbloom.com/slydeshow/或查看JSFiddle:http://jsfiddle.net/8FkYj/

(抱歉新手js代码!我至少试图评论一下)

Ric*_*haw 6

您可以将停止事件绑定到$(窗口).blur,并将启动事件绑定到$(窗口).focus,以便在选项卡处于非活动状态时计时器停止.

就像是:

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

$(window).blur(function() {
    clearInterval(interval_id);
    interval_id = 0;
});
Run Code Online (Sandbox Code Playgroud)