我正在使用 ExtJS。我想在执行 highload 脚本之前屏蔽我的窗口。当我使用
App.mask();
some.high.load.script();
App.unmask();
面具没有出现。在掩码函数启动 highload 之后,它不能更改 html,直到它结束。在那种情况下,我需要使用 defer(setTimeout 模拟)。有没有没有延迟方法的解决方案?
我正在使用 ExtJS。我想在执行 highload 脚本之前屏蔽我的窗口。当我使用
App.mask();
some.high.load.script();
App.unmask();
面具没有出现。在掩码函数启动 highload 之后,它不能更改 html,直到它结束。在那种情况下,我需要使用 defer(setTimeout 模拟)。有没有没有延迟方法的解决方案?
尝试:
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 以上所有这些本质上都是请求关于节点的样式信息,并且任何时候你这样做,浏览器必须为您提供最新的价值。为此,它需要应用所有计划的更改、刷新队列、咬紧牙关并进行回流。
函数延迟是解决该问题的唯一方法。