0

我正在使用 ExtJS。我想在执行 highload 脚本之前屏蔽我的窗口。当我使用

App.mask();
some.high.load.script();
App.unmask();

面具没有出现。在掩码函数启动 highload 之后,它不能更改 html,直到它结束。在那种情况下,我需要使用 defer(setTimeout 模拟)。有没有没有延迟方法的解决方案?

4

2 回答 2

0

尝试:

App.mask();
document.body.offsetHeight;
some.high.load.script();
App.unmask();

欲了解更多信息:http ://www.phpied.com/rendering-repaint-reflowrelayout-restyle/ :

脚本可能会阻止浏览器优化回流,并导致它刷新队列并执行所有批量更改。当您请求样式信息时会发生这种情况,例如

offsetTop、offsetLeft、offsetWidth、offsetHeight scrollTop/Left/Width/Height clientTop/Left/Width/Height getComputedStyle() 或 IE 中的 currentStyle 以上所有这些本质上都是请求关于节点的样式信息,并且任何时候你这样做,浏览器必须为您提供最新的价值。为此,它需要应用所有计划的更改、刷新队列、咬紧牙关并进行回流。

于 2012-06-02T10:22:21.790 回答
0

函数延迟是解决该问题的唯一方法。

于 2012-08-14T07:08:28.060 回答