国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

「エレメントレンダリング」はありますか?イベント?
P粉727531237
P粉727531237 2024-02-26 10:42:45
0
2
672

Web アプリケーション內のテキストのサイズを正確に測定する必要があります。これを行うには、(関連する CSS クラスを使用して) 要素を作成し、その innerHTML を設定してから、appendChild を使用して追加します。 コンテナに実裝されます。

これを実行した後、要素がレンダリングされるまでしばらく待つ必要があります。要素の offsetWidth を読み取ってテキストの幅を知ることができます。

現(xiàn)在、setTimeout(processText, 100) を使用してレンダリングが完了するまで待機しています。

リッスンできるコールバック、または作成した要素がいつレンダリングされたかを知るためのより信頼性の高い方法はありますか?

P粉727531237
P粉727531237

全員に返信(2)
P粉924915787

受け入れられた回答は 2014 年のもので、現(xiàn)在は古くなっています。 setTimeout は機能する可能性がありますが、最もクリーンな方法ではなく、要素が DOM に追加されたことを必ずしも保証しません。

2018 年現(xiàn)在、要素が DOM に追加されたことを検出するには MutationObserver を使用する必要があります。 MutationObservers は、すべての最新ブラウザー (Chrome 26、Firefox 14、IE11、Edge、Opera 15 など) で広くサポートされるようになりました。

DOM に要素を追加すると、その実際の寸法を取得できるようになります。

これは、要素が DOM に追加されたときに MutationObserver を使用してリッスンする方法の簡単な例です。

簡潔にするために、jQuery 構文を使用してノードを構築し、DOM に挿入します。

var myElement = $("
hello world
")[0]; varobserver = new MutationObserver(function(mutations) { if (document.contains(myElement)) { console.log("DOM 內にあります!"); オブザーバー.切斷(); } }); observer.observe(document, {屬性: false, childList: true,characterData: false, subtree: true}); $("body").append(myElement); // console.log: DOM 內にあります!

observer イベント ハンドラーは、document にノードが追加または削除されるたびに起動します。次に、ハンドラー內で contains チェックを実行して、myElementdocument 內にあるかどうかを確認します。

myElementdocument.contains チェックを直接実行できるため、mutations に格納されている各 MutationRecord を反復処理する必要はありません。

パフォーマンスを向上させるには、

document を、myElement を含む DOM 內の特定の要素に置き換えます。

いいねを押す +0
P粉314915922

現(xiàn)時點では、要素が完全にレンダリングされたことを示す DOM イベントはありません (追加の CSS が適用されて描畫されるなど)。これにより、一部の DOM 操作コードがエラーやランダムな結果 (要素の高さの取得など) を返す可能性があります。

setTimeout を使用してブラウザにレンダリングのオーバーヘッドを與えるのが最も簡単な方法です。使用###

setTimeout(function(){}, 0)

はおそらく最も実用的に正確です。コードを遅延なくアクティブなブラウザーのイベント キューの最後に配置します。つまり、コードはレンダリング操作 (およびその時點で行われる他のすべて) キューの後に配置されます。すぐに)。

いいねを押す +0
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート