3

我对我们心爱的浏览器 IE(所有版本)和 jquery 的选项卡 ui 控件有疑问。我使用 ajax 选项为标签加载我的内容。现在的问题是我必须同步执行此操作,因此每个请求一个接一个地导致异步。不适合我或只是非常错误。但这不是问题。问题是 IE 在锁定每次执行超过 jquery 代码之前不应用 ui-state-processing。似乎 IE 在这里的行为与所有其他浏览器不同。这是一种奇怪的原因,一旦请求完成,该类被应用到选项卡元素上,只是为了立即消失,因为一切都完成了。

有谁知道这可能是什么?已知问题?

顺便说一句,当我将 async 选项设置为 true 时,它​​工作得很好。

球座

4

1 回答 1

3

是的,这就是 IE 的功能。基本上,浏览器是这样工作的:

while (stillRunning()) {
    renderDOM();
    getNextInputEvent();
    runScripts();
}

换句话说,在脚本完成运行之前,您不会更新 DOM。现在,即使是 IE 在某些情况下也会不按顺序更新 DOM(只想到运行 alert() 或 confirm()),但通常不会。其他浏览器有时会不按顺序更新 DOM,这就是您遇到的情况:您的非 IE 浏览器正在更新 DOM,尽管仍停留在脚本运行阶段(因为您正在执行同步调用,直到你得到返回值才完成脚本)。

当然,当您异步运行它时,浏览器不会卡在脚本运行阶段,因此可以免费更新 UI。

这就是大多数 Web 应用程序使用异步调用的原因。因为这样做不会冻结您的界面。

于 2009-10-07T18:41:48.190 回答