为什么WebBrowser.Document.DomDocument不包含实际的DOM模型?

时间:2012-07-22 10:18:29

标签: c# webbrowser-control

我使用WebBrowser.Document.DomDocument,发现它在IE调试工具中有不同的DOM模型。

IE Debug Tool包含有效的实际DOM模型,而WebBrowser.Document.DomDocument不包含JavaScript动态添加的某些元素。

实际上,WebBrowser控件显示所有元素,甚至是动态添加的元素,但WebBrowser.Document.DomDocument包含过时的DOM模型。

IE Debug Tool可以显示实际修改过的DOM模型的当前状态,如何使用WebBrowser组件获取当前的DOM模型?

确实应该是一种方法。

1 个答案:

答案 0 :(得分:2)

这个问题可以使用更好的文档。但这是一个非常经典的问题,这是一个时间问题。您无疑会过早访问DomDocument属性 ,通常您会在浏览器的DocumentCompleted事件中执行此操作。这大约是javascript代码启动执行的时间。因此,在脚本进行更改之前,您将获得DOM的版本。

没有合适的方法来解决这个问题。执行Javascript完全是异步的,并且没有事件表明任何脚本代码已启动或停止运行。你能做的唯一体面的事就是“等一会儿”,使用计时器。最好反复进行,直到您看到DOM的良好指示,表明脚本已完成更改。