javascript - 如何立即在IE中通过javascript设置样式

标签 javascript css internet-explorer

最近我遇到了 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/

相关文章:

javascript - for循环帮助,javascript的未知语法

JavaScript - 重复函数,列出一定范围内的 'n' 个随机数,不重复

css - 如何在我的 DIV 上排列选择列表?

jquery - Bootstrap .carousel(number) 不工作

javascript - Bootstrap 音频播放器的列布局

javascript - CSS3 支持 ie6,7,8

javascript - 如何在移动浏览器(Chrome)中禁用 onclick 文本突出显示?

javascript - Eslint:警告文件默认被忽略。使用否定忽略模式

php - 在 Mysql 中通过 PHP 和 BLOB 动态图像

internet-explorer - PDF 在 Chrome、Firefox 中显示,但在 IE8 中不显示