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 に答える