3

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

IE 调试工具包含有效的实际 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 回答