• ベストアンサー

ie のレイアウト完了イベント

ie のレイアウト完了イベント レイアウトが完了するまで非常に時間のかかるフォームがあります。 レイアウトが完了するまで入力できないようにしたいのですが、 レイアウトが完了したことを知るイベントはないでしょうか。 ググルと firefox だと onload イベントが発生した時には、レイアウトが 完了しているという情報が見つかるのですが、ie でレイアウトの完了を 知る方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • zabiora
  • ベストアンサー率100% (1/1)
回答No.1

レイアウトという言葉が抽象的でイマイチ何を指しているのか理解しかねるのですが「レイアウト=エレメントの配置の完了」という理解でよろしいのでしたら prototype.jsの使用ができる環境ならばprototype.jsの拡張イベントである'dom:loaded'を使用すればいいと思います 参考URLを張っておきますので参照していただけたらと思います

参考URL:
http://ajax.studynet.jp/libraries/prototypejs/dom-loaded
t-okura
質問者

お礼

お礼が遅くなりました。 残念ながらレイアウトが完了したタイミングをとらえるイベントの 有無はわかりませんでした。 対処したかったページでは、onload イベント中にINPUT項目の制御 (条件により readonly にする)をしていたのですが、これにもかなりの 時間がかかっていました。 そこで、問題の表を HTML 上で display:hidden として隠し、 onload 処理の最後で display:visible に変えて表示するように しました。 その結果、表が表示されるまでにしばらくかかるのですが、 表示されたときにはレイアウトは完了していました。 onload 処理にかなりの時間がかかるため、たまたま希望どおりの 動作になっているのだと思うのですが、この方法で対処することにしました。 解決には結びつきませんでしたが、ご回答ありがとうございました。

t-okura
質問者

補足

回答ありがとうございます。参考 URL 拝見しました。 サイズの大きい画像ファイルなどが存在すると、loadイベントが発生するまで 時間がかかります。この場合、dom:loadedイベントを利用すると、ユーザビリ ティが向上します。 とあるので、dom:loaded では画像の読み込みが終わる前にイベントが発生する のだと思います。 質問があいまいだったようなのですが、ウェブページを表示したとき、画像が 表示されるにつれ配置がずれていき、すべての画像が読み込まれて 安定した表示位置に落ち着くことがあります。このブラウザに表示される 最終的な配置をレイアウトと書きました。 dom:loaded では、最終的な配置が表示される前にイベントが発生すると 思うのですが、最終的な配置が表示されたあとで発生するイベントはない でしょうか。

その他の回答 (2)

回答No.3

ところで、imgタグのなかに、たかさとか、はばとか、していしている? そういうおちじゃなかったら、ごめん。

t-okura
質問者

お礼

質問に興味を持っていただき、ありがとうございます。 「レイアウトが完成する」というのを説明するため、img を出したのは かえってよくなかったようです。 実際に対処したいページには img はなく、div を使った擬似フレーム 内にさまざまな行数を持つ大量の table があります。 table 内には input 要素があるのですが、その数は多いときで 3,000個くらいになります。 ページが表示されたあと、擬似フレームにスクロールバーが現れるまでに かなり時間がかかっているのですが、スクロールバーがあらわれまで入力を 禁止したく、そのタイミングをとらえたいのです。 この処理を行うのに適当なイベントがありましたらご教示ください。 よろしくお願いします。

  • zabiora
  • ベストアンサー率100% (1/1)
回答No.2

要するに全ての画像が読み込み(表示)終わったタイミングを知りたいってことですかね。 各<img>タグのonloadイベントを利用するのではだめなのですかね? javascriptとの連携して多少コード書けば全ての画像が読み込み完了したタイミングを知ることは容易にできると思いますが。 firefoxでのonloadイベント云々といってるのは、window.onloadの事なのか各画像のタグのonloadの事なのかも知りたいですね。

t-okura
質問者

補足

まだ説明が足りなかったようです。 ページの各要素の読み込みが完了したタイミングではなく、 ページ内のあるべき位置への配置が終わり表示されたタイミングを とらえたいのです。先の説明では例としてあげやすいのでimgを 使ったのですが、レイアウトに時間がかかっているのは div を 使った擬似フレーム内にある100個くらいのテーブルなのです。 window.onload イベントが発生したタイミングでは擬似フレーム 内のレイアウトが完了しておらずスクロールバーが表示されて いません。しかし、部分的に表示されているボタンや入力フィールド の操作ができてしまいます。擬似フレームのスクロールバーが 表示されるまでに6秒くらいかかるのですが、この間 操作できないよう 制御したいと思っています。 firefox の onload イベントはレイアウト完了後に発生すると いうのは下記 URL で見ました。 http://wontfix.blogspot.com/2010/02/onload.html よろしくお願いします。

関連するQ&A