Javascript,总之做一个'whileFocused' eventListener? (没有JQuery)
Javascript, anyway to do a 'whileFocused' eventListener? (No JQuery)
有没有办法在 dom 元素上实现或模拟 'while focused' 绑定?
假设每秒记录一条消息,在发生焦点时开始,但在离开时停止。
考虑到这一点:
myinput.addEventListener("focus", function(){
setInterval(function(){
console.log('Mouse on:' + this)
}, 1000);
});
我唯一能想到的就是使用全局变量,例如:
var isfocused = false;
myinput.addEventListener("focus", function(){
isfocused = true;
setInterval(function(){
if (isfocused)
console.log('Mouse on:' + this)
}, 1000);
});
然后为 onblur 添加另一个侦听器以切换 'isfocused'
但那种感觉……完全不对。加上 setInterval 会继续在后台触发吗?
window.setInterval returns 您的间隔回调的 ID。然后您可以将该 id 传递给 window.clearInterval(id) 以停止它。像
var intervalId;
myinput.addEventListener("focus", function(){
intervalId = setInterval(function(){
console.log('Mouse on:' + this)
}, 1000);
});
myinput.addEventListener("unfocus", function(){
clearInterval(intervalId);
});
@Scott Schwalbe 略有改进
(function(){
var intervalId;
myinput.addEventListener("focus", function(){
intervalId = setInterval(function(){
console.log('Mouse on:' + this)
}, 1000);
});
myinput.addEventListener("blur", function(){
clearInterval(intervalId);
});
})();
1) 用Immediately Invoked Function Expression包裹起来,保持全局变量space纯净
2) 'unfocus' 事件真的是 'blur'
有没有办法在 dom 元素上实现或模拟 'while focused' 绑定? 假设每秒记录一条消息,在发生焦点时开始,但在离开时停止。
考虑到这一点:
myinput.addEventListener("focus", function(){
setInterval(function(){
console.log('Mouse on:' + this)
}, 1000);
});
我唯一能想到的就是使用全局变量,例如:
var isfocused = false;
myinput.addEventListener("focus", function(){
isfocused = true;
setInterval(function(){
if (isfocused)
console.log('Mouse on:' + this)
}, 1000);
});
然后为 onblur 添加另一个侦听器以切换 'isfocused'
但那种感觉……完全不对。加上 setInterval 会继续在后台触发吗?
window.setInterval returns 您的间隔回调的 ID。然后您可以将该 id 传递给 window.clearInterval(id) 以停止它。像
var intervalId;
myinput.addEventListener("focus", function(){
intervalId = setInterval(function(){
console.log('Mouse on:' + this)
}, 1000);
});
myinput.addEventListener("unfocus", function(){
clearInterval(intervalId);
});
@Scott Schwalbe 略有改进
(function(){
var intervalId;
myinput.addEventListener("focus", function(){
intervalId = setInterval(function(){
console.log('Mouse on:' + this)
}, 1000);
});
myinput.addEventListener("blur", function(){
clearInterval(intervalId);
});
})();
1) 用Immediately Invoked Function Expression包裹起来,保持全局变量space纯净
2) 'unfocus' 事件真的是 'blur'