Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Winforms web浏览器控件未使用AJAX网站激活文档_Html_Vb.net_Ajax_Automation_Webbrowser Control - Fatal编程技术网

Html Winforms web浏览器控件未使用AJAX网站激活文档

Html Winforms web浏览器控件未使用AJAX网站激活文档,html,vb.net,ajax,automation,webbrowser-control,Html,Vb.net,Ajax,Automation,Webbrowser Control,VB.Net桌面应用程序使用IE浏览器控件浏览web。当一个普通页面加载文档时,会触发“完成”事件,我可以读取结果页面并从那里开始。我遇到的问题是,我正在驾驶的页面是用AJAX编写的,因此文档完成事件永远不会触发。此外,当您在页面通过AJAX加载新部分后查看页面的源代码时,它没有改变。人们是如何处理这件事的?我的选择是什么?您需要使用HtmlDocument上的方法与网站中的Javascript代码进行交互,我在C中看到过这种行为,当一些AJAX脚本创建竞争条件时。在这种情况下,添加到脚本标记会

VB.Net桌面应用程序使用IE浏览器控件浏览web。当一个普通页面加载文档时,会触发“完成”事件,我可以读取结果页面并从那里开始。我遇到的问题是,我正在驾驶的页面是用AJAX编写的,因此文档完成事件永远不会触发。此外,当您在页面通过AJAX加载新部分后查看页面的源代码时,它没有改变。人们是如何处理这件事的?我的选择是什么?

您需要使用
HtmlDocument
上的方法与网站中的Javascript代码进行交互,我在C中看到过这种行为,当一些AJAX脚本创建竞争条件时。在这种情况下,添加到脚本标记会有所帮助。YMMV.

不确定这是否有效

Ajax调用完成后,向URL添加一个随机锚散列,如下所示:foo.html#23234 然后将代码添加到NavigateComplete2事件中


我猜您在windows应用程序中加载的页面会执行AJAX调用,这似乎会刷新页面。在这种情况下,不会触发document_complete事件,因为网页本身不会刷新,而是页面的一部分


我在VB.Net中找到了关于这个问题的答案。

这个解决方案可能会解决您的问题。 先决条件: AxwebBrowser控件, 对mshtml.dll的引用

将axmshtml设置为mshtml.HTMLDocument=YourAxWebBrowserControl.Document

Dim HTMLSource As String=axmshtml.body.innerHTML的html源,包括DOM更改

如果您知道要查找什么,可以将上述代码放入计时器/循环中

并且只需监视页面源的更改

您可以使用ProgressChanged事件,它似乎在ajax调用过程中触发

如果wb是您的webbrowser控件,则不使用以下命令获取HTML:

wb.DocumentText
使用:

这将为您提供更新的html,反映AJAX更新


至于检测AJAX何时完成,对我来说,它似乎触发了DocumentCompleted事件。不知道为什么对你来说不同。

这要看情况而定。你想做什么?还有,AJAX/Javascript/CSS/VBS/无论什么都不会修改源代码,他们会修改DOM。当DOM被触发时,VB.Net中是否会触发事件?我想你误解了这个问题。我无法编辑网站-它不是我的。我只是在驱动控件并处理生成的页面。我是否在监视VB.Net中的另一个事件?你能举个例子吗?但是我怎么知道AJAX调用何时完成呢?有什么问题吗?不确定您使用的是什么框架,但对于核心api,您知道onreadystatechange事件函数onSumResponse()中的加载已完成{if(xhReq.readyState!=4){return;}var serverResponse=xhReq.responseText;..}。。。var xhReq=createXMLHttpRequest();xhReq.open(“GET”、“sumGet.phtml?图1=5和图2=10”,true);xhReq.onreadystatechange=onsumsresponse;xhReq.send(空);裁判:
wb.Document.Body.InnerHtml