エレメントレンダリング」イベントはありますか?
2023-08-15 20:17:10
質問
ウェブアプリ内のテキストの寸法を正確に測定する必要がありますが、そのためには、(関連するCSSクラスで)要素を作成し、その
innerHTML
を設定し、それをコンテナに追加して
appendChild
.
これを実行した後、要素がレンダリングされるまでに待ち時間があり、その間に
offsetWidth
が読み込まれ、テキストの幅を知ることができます。
現在、私は
setTimeout(processText, 100)
を使用して、レンダリングが完了するまで待機しています。
私が作成した要素がレンダリングされたときに、私が聞くことができるコールバック、またはより信頼性の高い方法はありますか?
どのように解決するのですか?
現在、要素が完全にレンダリングされたことを示す DOM イベントはありません (例: 付属の CSS が適用されて描画される)。このため、一部の DOM 操作コードが間違った、またはランダムな結果を返すことがあります (要素の高さを取得するような場合)。
setTimeout を使用して、レンダリングのためのオーバーヘッドをブラウザに与えるのが最も簡単な方法です。使用方法
setTimeout(function(){}, 0)
はおそらく最も実用的な方法で、あなたのコードをアクティブなブラウザのイベントキューの最後に、それ以上の遅延なく配置します。
関連
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] jQueryで名前を指定して要素を選択するには?
-
[解決済み] idによる要素の削除
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み] setTimeout(fn, 0)が役に立つことがあるのはなぜですか?
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] 配列からオブジェクトを生成する
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] 文字列が空白であるかどうかをチェックする
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する