javascript - Internet Explorer 闪烁问题

标签 javascript jquery css internet-explorer dom

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

具体问题如下:

我有一个 html form,其中有几个用户必须填写的input 文本字段。 marquee 动画每 X 毫秒运行一次(其中 X 小于 1 秒)。每当文本字段获得焦点时(用户单击它以填充它),文本光标不会闪烁(正如它应该的那样)并永久保持在条形形式(作为 | 符号) - 请原谅我的语言...:-) ).

我已将有问题的代码精简到最低限度,您可以在这里尝试一下:http://jsfiddle.net/kyVqk/

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

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

由于我正在做的元素具有很高的知名度和客户曝光度,因此客户不愿意让这一点过去。有人能解释一下为什么会发生这种情况吗?是否有解决方法(在动画之前/之后从 DOM 附加/分离元素、动画之后重新聚焦等)?请注意,不能选择失去选取框效果。

最佳答案

我以前用IE时遇到过一些闪烁的问题,不知道是否和你的一样,但是尝试一下:

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

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

关于javascript - Internet Explorer 闪烁问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8536579/

相关文章:

javascript - 使用 jquery 循环列表 - 轮播效果

javascript - 向 XPages 部分刷新 (dojo.xhrPost) 事件添加错误函数?

javascript - 如何将INPUT的值保存在变量中?

php - 使用 JQuery Ajax 调用 php 函数

javascript - 滚动属性不适用于 iframe

css - 背景图像 - 在容器中制作全宽图像

javascript - 查询 Marionette.js 集合

javascript - 如何设置选择框的选项

javascript - 如何使用 ajax 在文件中加载特定的 div/class?

javascript - 类概念 SAPUI5