Internet Explorer 闪烁问题

3
我正在构建一个包含运行动画的Web应用程序,该动画复制了非便携式 marquee 元素的行为。我使用http://jscroller2.markusbordihn.de/实现此效果,但问题的根本原因似乎与库本身没有直接关系(它只是暴露问题的触发器)。
确切的问题如下:
我有一个HTML 表单,其中包含几个输入文本字段,用户必须填写。 marquee动画每X毫秒运行一次(其中X小于1秒)。每当焦点在文本字段上(用户点击以填写它),文本光标不会闪烁(应该这样做),并且永久保留为条形形式(作为|符号-请原谅我的语言... :-))。
我已将有问题的代码剥离到最低限度,您可以在此处尝试:http://jsfiddle.net/kyVqk/
要进行测试,只需按下“开始”按钮,然后单击文本字段。每次动画运行时,一个点应该附加到输入文本下面的标签,并且光标不应闪烁(这是问题所在)。请注意,如果动画在大于1秒的时间间隔内运行,则不会发生这种情况(您可以在先前的fiddle中测试此内容),并且光标会像预期的那样闪烁。这使我相信问题在于浏览器在更新过程中执行文本呈现和取消聚焦/重新聚焦字段的方式。
此问题仅适用于Internet Explorer(至少在版本6中),因为其他主要浏览器(Firefox和Chrome)不会出现此行为。我已尝试直接通过DOM对象innerHTML更新标签,但没有成功。更改的确切内容也不重要。如果动画仅从元素读取属性,则不会出现此问题(仅在更新元素的属性 - 任何属性时才会出现)。

由于我正在开发的项目具有很高的可见性和客户曝光率,因此客户不愿意放过。有人能否解释一下为什么会发生这种情况?是否有解决方法(在动画之前/之后附加/分离DOM元素,在动画之后重新聚焦等)?请注意,失去跑马灯效果不是一个选项。


1
IE6 已经快要消失了,不用担心这个小的视觉问题。IE6 的 JavaScript 支持非常糟糕,这就是问题所在。 - cdeszaq
正如我所说,无法这样做,因为客户端依赖它(相信我,如果可能的话,我会很乐意让IE痛苦死亡;-))。即便如此,这个问题不仅特定于IE6。它在IE7中也会发生(在IETester中刚刚确认了这一点)。 - lsoliveira
1
你能否在IE中使用条件注释来直接使用marquee标签? - cdeszaq
@cdeszaq说:“IE6快要消失了”,但至少对我来说是假的。仍有12%的用户(浏览我的网站的人)在使用它。 - Paolo
1
@Guandalino - 微软刚刚宣布他们将强制所有IE6用户升级,所以我想这个问题不久就会解决。http://www.digitaltrends.com/computing/microsoft-to-start-silent-upgrades-to-internet-explorer/ - Erik Funkenbusch
显示剩余7条评论
1个回答

0

我以前在IE中遇到了一些闪烁问题,不知道是否和你的问题相同,但可以试试:

//@cc_on document.execCommand("BackgroundImageCache", false, true);// don't remove : prevent IE6 cursor blinking

我记得的另一个修复方法是将固定背景设置为页面主体...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接