特定のコンポーネントを介してその場で要素が変更される状況があります。このコンポーネントは、これらの要素の innerHTML を変更しますが、要素を実際に再レンダリングするのではなく、そのコンテンツのみを再レンダリングします。これにより、最終的な DOM が最初にページにあった場合とは異なる状況が発生します。これは私にとって問題です。
このような混同の例は 次のとおりです: 次のマークアップを使用すると:
<h1 id="foo">Hi there stranger!</h1>
そして、次の JS コードを追加します。
document.getElementById('foo').innerHTML = "Hi <h2>there</h2> stranger!";
次のマークアップが得られます。
<h1 id="foo">Hi <h2>there</h2> stranger!</h1>
上記と同じようにレンダリングされます (H1 内に H2 があります) が、このマークアップが最初にページにあった場合、次のようにレンダリングされます。
<h1>Hi</h1> <h2>there</h2> <h1>stranger!</h1>
これは明らかに別のドキュメントになります。
私の質問は次のとおり です。ブラウザにこのマークアップを強制的に再レンダリングさせるにはどうすればよいですか? 上記の H1 を参照して、最初にレンダリングしたのと同じ方法で再レンダリングするように指示できるようにしたいと考えています。すべての主要なエンジン (Gecko、Webkit、IE) でこれを行うにはどうすればよいですか?