3

WebBrowser.Document.DomDocument を使用すると、IE Debug Tool で確認できる DOM モデルが異なることがわかりました。

IE Debug Tool には有効な実際の DOM モデルが含まれていますが、WebBrowser.Document.DomDocument には JavaScript によって動的に追加された要素が含まれていません。

実際、WebBrowser コントロールは、動的に追加されたものも含めてすべての要素を表示しますが、WebBrowser.Document.DomDocument には古い DOM モデルが含まれています。

IE Debug Tool は、現在の状態で実際に変更された DOM モデルを表示できます。WebBrowser コンポーネントを使用して現在の DOM モデルを取得する方法は?

確実にそれを行う方法があるはずです。

4

1 に答える 1

2

この質問は、より良いドキュメントを使用できます。しかし、これは非常に古典的な問題であり、タイミングの問題です。DomDocument プロパティへのアクセスが早すぎることは間違いありません。通常は、ブラウザーの DocumentCompleted イベントでアクセスします。これは、JavaScript コードが実行を開始するおおよその時間です。したがって、スクリプトによって変更が加えられる前の DOM のバージョンを取得できます。

問題に対処する適切な方法はありません。Javascript の実行は完全に非同期であり、スクリプト コードの実行の開始または停止を示すイベントはありません。あなたができる唯一のまともなことは、「しばらく待って」、タイマーを使用することです. できれば、スクリプトの変更が完了したことを DOM から適切に示すまで繰り返します。

于 2012-07-22T15:23:55.780 に答える