ie浏览器闪烁问题

Internet Explorer flickering issues

本文关键字:问题 闪烁 浏览器 ie      更新时间:2023-09-26

我正在构建一个web应用程序,其中包括一个运行动画,该动画再现了一个不可移植的marquee元素的行为。我使用http://jscroller2.markusbordihn.de/来达到这个效果,但是问题的根本原因似乎与库本身没有直接关系(它只是暴露问题的触发器)。

具体问题如下:

我有一个html form与几个input文本字段,用户必须填写。marquee动画每X毫秒运行一次(其中X小于1秒)。每当一个文本字段被聚焦(用户点击它的目的是填写它),文本光标不会闪烁(它应该),并永久保持在条形(作为|符号-原谅我的语言…: -)) .

我已经将违规代码精简到最少,您可以在这里试用:http://jsfiddle.net/kyVqk/。

要测试,只需按下Start按钮,然后单击文本字段。每次动画运行时,应该在输入文本下面的标签上添加一个点,并且光标不应该闪烁(这就是问题所在)。请注意,如果动画以大于1秒的时间间隔运行,则不会发生这种情况(您可以在前一段中进行测试),并且光标会像预期的那样闪烁。这让我相信问题在于浏览器在更新过程中执行文本渲染和取消/重新聚焦字段的方式。

此问题是Internet Explorer特有的(至少在版本6中),因为其他主要浏览器(Firefox和Chrome)没有此行为。我已经尝试通过DOM的对象innerHTML直接更新标签,但没有成功。改变的具体内容也不重要。如果动画只从元素中读取属性,则问题本身不会出现(只有在更新元素的属性时——任何属性)。

由于我正在做的项目有很高的知名度和客户曝光率,客户不愿意让它过去。有人能解释一下为什么会这样吗?是否有解决方法(在动画之前/之后从DOM中附加/分离元素,动画后重新聚焦等)?请注意,失去marquee效果是不可能的。

我在过去的IE中遇到了一些闪烁的问题,不知道它是否与您的相同,但请尝试一下:

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

然后另一个修复我记得是设置一个固定的背景正文…