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上記のすべては、基本的にノードに関するスタイル情報を要求します。ブラウザはあなたに最新の価値を与えなければなりません。そのためには、スケジュールされたすべての変更を適用し、キューをフラッシュし、弾丸を噛み、リフローを実行する必要があります。
関数の据え置きは、その問題を解決する唯一の方法です。