2011-01-19 77 views
0

我正在使用浏览器并使用浏览器控件。 现在我在同一个控件中导航页面1。使用浏览器控件的问题

但虽然我这样做有时浏览器开始加载其他页面之前第一页已完全加载。而有时它会停止所有的执行,并且没有页面正在进行中。

我正在使用webBrowser1_DocumentCompleted事件来处理文档,并且有时它已被多次加载。

所以有什么解决方案,我可以检查我的浏览器是忙工作还是浏览完成。

+0

哪个网页浏览器控制? Windows窗体? WPF? – 2011-01-19 04:07:09

回答

4

我注意到,如果页面使用框架,它会多次完成文档。
您可以从WebBrowser1_DocumentCompleted事件参数中获取已加载页面的URL。

如果是,有多个帧,您可以用WebBrowser1.URL比较WebBrowser1_DocumentCompleted的URL的情况下

所以

if(e.URL == webBrowser1.url) { 
    // The main page is done loading 
} 

或者你可以尝试检查

WebBrowser1.ReadyState == WebBrowserReadyState.Complete 

一对夫妇我发现WinForms WebBrowser控件的陷阱是

当通过AJAX完成更改时,您有权访问的DOM不会更新。

除非你做了一些额外的工作来检测何时创建一个新窗口并将其放入一个标签,(有一些关于如何做到这一点的文章,如果你需要它,我可以发送一个链接) 打开新页面Windows将在新流程中启动,因此您将失去抓取这些内容的能力,并且会失去会话,因此如果您登录到网页,则会在新窗口中注销。

+0

谢谢jamiegs thatz我正在寻找的东西。 – 2011-01-20 08:48:08