hI遇到了一个问题,如果窗口处于焦点状态,那么如何使用jQuery来召回。当窗口不在焦点(onblur)时,请暂停该功能,直到窗口再次聚焦为止。
这是我的代码:
function functiondosomething (user_id) {
var myInterval;
var time_delay = 1000;
$(window).focus(function () {
setTimeout(function() { functiondosomething (user_id); }, time_delay);
}).blur(function () {
clearTimeout(myInterval); // Clearing interval on window blur
});
setTimeout(function() { functiondosomething (user_id); }, time_delay);// ## problem here
}
我的问题是:
发布于 2013-09-09 11:30:47
我在这里看到了一些问题:
myInterval
,所以当您调用clearTimeout(myInterval)
时,它不会清除任何内容。setTimeout
。这意味着每次重新运行时都会设置处理程序,而递归意味着无论处理程序是否运行,它都会运行。我认为你需要把事情分开一点:
function functiondosomething(user_id) {
// Do stuff...
}
function setupHandlers(user_id) {
var myInterval;
var time_delay = 1000;
function doSomethingWrapper() {
functiondosomething(user_id);
myInterval = setTimeout(doSomethingWrapper, time_delay);
}
$(window).focus(function () {
doSomethingWrapper();
}).blur(function () {
clearTimeout(myInterval); // Clearing interval on window blur
});
doSomethingWrapper();
};
https://stackoverflow.com/questions/18705174
复制相似问题