最近我遇到了 IE 的问题。我有一个功能
function() {
ShowProgress();
DoSomeWork();
HideProgress();
}
其中 ShowProgress 和 HideProgress 只是使用 jQuery 的 css() 方法操作“显示”CSS 样式。
在 FF 中一切正常,同时我将显示属性更改为 block ,出现进度条。但不是在 IE 中。在 IE 中,一旦我离开该功能,就会应用样式。这意味着它永远不会显示,因为在函数的末尾我只是隐藏它。 (如果我删除 HideProgress 行,进度条会在完成函数执行后立即出现(更准确地说,在调用函数结束时立即出现 - 因此在 IE 中没有其他任何事情发生))。
有没有人遇到过这种行为?有没有办法让 IE 立即应用样式?
我已经准备了一个解决方案,但我需要一些时间来实现它。我的 DoSomeWork() 方法正在执行一些 AJAX 调用,这些调用现在是同步的。我认为让它们异步可以解决问题,但我必须稍微重新设计一下代码,因此找到一个仅用于立即应用样式的解决方案会简单得多。
谢谢雷兹纳
最佳答案
同步请求会阻塞整个 UI,这很糟糕。你的假设是对的,但如果你想继续沿着这条路走到 $hell 的内圈,试试这个:
function () {
ShowProgress();
window.setTimeout(function () {
DoSomeWork();
HideProgress();
}, 0);
}
请注意,我还没有对此进行测试。如果您仍然看不到任何内容,请尝试调整超时值(当前为 0
)。
关于javascript - 如何立即在IE中通过javascript设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995498/