2

別の要素の高さに基づいて要素の高さを設定する必要があります。その要素のレンダリングが終了したとき、高さが 490px であるとしましょう。

内部の関数の先頭でその他の要素の高さを照会すると、$(document).ready()432px が返されます。

内の他の要素の高さを照会するとsetTimeout(function, 100)、約 475px が返されます。

最大でsetTimeout150 程度まで上げると、要素のレンダリングが終了し、190 になります。しかし、明らかにこれを当てにすることはできません。

可能であれば、ページ全体の読み込みが完了するまで待ちたくありません。この要素だけを待ちたい。

イベントは任意の要素で動作するはずのようですloadが、私が知る限り、それはブラウザ、または少なくとも Chrome では実装されていません。

EDIT : 要素は画像ではなく、(ほぼ確実に) 要素内に画像が存在することはありません。それは<div>、他<div>の s と<p>s とその中にあるものだけです。高さは、CSS が適用されている最中などに照会されているようです。コードサンプルは近日公開予定です。

EDIT 2:これは私のサイトからハッキングされたフィドルです。(恐ろしいマークアップを許してください。私はまだ Drupal の出力をクリーンアップしていません。) ただし、修正しようとしている悪い動作はフィドルには見られません。これは、Javascript の関連部分が処理される前にスニペット全体がレンダリングされるためです。走る。

これを行う方法はありますか、それとも私は立ち往生していwindow.onloadますか?

4

2 に答える 2

2

次のようなことができます。

<img src="myImage.gif" onload="loadImage()">
于 2013-04-16T16:30:22.717 に答える
0

$(window).load()ページ上の要素のサイズに影響を与える可能性のある画像や CSS シートなどの追加リソースを待つ必要があるため、少なくとも使用する必要があります。

load()画像も操作できます。を必要とせずに正しく取得できるはずですsetTimeout

http://api.jquery.com/load-event/には、画像に対しては確実に機能しないという通知が含まれています。

于 2013-04-16T16:30:09.560 に答える