Javascript 如何防止IE8文本输入中的光标闪烁?
我注意到,在IE8中,使用jQuery运行定时gui更新例程会使文本输入中的光标闪烁 我可能应该耸耸肩,继续前行。。。这显然不是世界末日,一切都很好,等等。。。但我很好奇到底发生了什么 闪烁:Javascript 如何防止IE8文本输入中的光标闪烁?,javascript,jquery,user-interface,animation,internet-explorer-8,Javascript,Jquery,User Interface,Animation,Internet Explorer 8,我注意到,在IE8中,使用jQuery运行定时gui更新例程会使文本输入中的光标闪烁 我可能应该耸耸肩,继续前行。。。这显然不是世界末日,一切都很好,等等。。。但我很好奇到底发生了什么 闪烁: var $target = $("#timer"), timeRemaining = 9999; (function timer() { timeRemaining = timeRemaining - 1; $target.text(timeRemaining ); setTi
var $target = $("#timer"),
timeRemaining = 9999;
(function timer() {
timeRemaining = timeRemaining - 1;
$target.text(timeRemaining );
setTimeout(timer, 30);
})();
不会闪烁:
var target = document.getElementById("timer"),
timeRemaining = 9999;
(function timer() {
timeRemaining = timeRemaining - 1;
target.innerHTML = timeRemaining;
setTimeout(timer, 30);
})();
我意识到在使用jQuery时会有额外的开销。。。但我的印象是,如上所示的选择器非常有效
那么,有什么好处呢
FWIW,现场示例如下:
(使用jQuery-这会闪烁)
(使用纯ol'JS-不会闪烁)我猜问题在于您使用的
文本方法。调用此函数时,jQuery将运行以下函数:
function (text) {
if (jQuery.isFunction(text)) {
return this.each(function (i) {
var self = jQuery(this);
self.text(text.call(this, i, self.text()));
});
}
if (typeof text !== "object" && text !== undefined) {
return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(text));
}
return jQuery.text(this);
}
这不可避免地会比设置innerHTML
慢,并且很可能是您感觉到的闪烁的来源
要测试这一点,您可以使用相同的选择器,但不要使用$target.get(0).innerHTML=timeRemaining代码>