我正在使用WebBrowser来解析使用javascript和的网页 我一直试图通过使用在页面上找到我需要的东西 DocumentCompleted事件并通过HtmlElement内部文本检查WebBrowser中的Document属性 (我知道它在页面加载后出现一段时间后)。 类似的东西:
private void WebDocCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
parseWebbrowserDocumentPropertyFunc(); // wich set the content value to true
if (!content)
return;
}
所以,当我开始执行调试代码时,我看到一件事: 在webbroser停止触发DocumentCompleted事件之后,标记(HtmlElement)出现在webbroser中。 我的意思是没有DocumentCompleted事件发生,但DocumentText属性仍在改变。
好的,我已经通过使用timer + Application.DoEvents()完成了我的工作 一切都很好,但解析过程开始花费很多时间,因为 - 我不知道为什么。
现在我认为Application.DoEvents()不是很好的解决方案,我仍然想要使用DocumentCompleted事件, 但我无法找到一些信息:
为什么在没有触发DocumentCompleted事件的情况下发生DocumentText属性更改
或
我可以使用什么来等待页面上需要的标记而不是计时器
计时器设置为200毫秒
答案 0 :(得分:0)
每次加载帧时都会触发DocumentCompleted
事件。很明显,每次发射时文件都是不同的。
您可以在活动中添加额外的支票。仅在整个文档完成时才设置ReadyState
。
private void WebDocCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (yourBrowser.ReadyState != WebBrowserReadyState.Complete)
return;
parseWebbrowserDocumentPropertyFunc();
}
答案 1 :(得分:0)
为什么DocumentText属性发生变化而不会发生火灾 DocumentCompleted事件
这是因为您的计时器工作太快(200毫秒)和y
事件无法及时到达。尝试停止计时器,直到DocumentComplete
没有被解雇。
DocumentComplete