WebBrowser-导航加载

方法:

Navigate()

 

事件:

Navigating()

Navigated()

DocumentCompleted()

 

 

Naviagte()的一个有newWidnow参数的重载用于打开一个默认浏览器窗口并加载目标url,此时这个默认浏览器窗口已独立于WebBrowser

 

Navigating()的e参数里有个Cancel属性,可用于取消导航操作

 

Navigated()与DocumentCompleted()的区另在于前者意味着页面数据已加载完毕,后者意味着页面解析完毕,可以作以下试验:

Naviagte一个放置了cnzz计数器(js)的站点,在Navigated里输出DocumentText并Sleep(30000),可以发现DocumentText里包含了目标页的完整html代码,且在Sleep期间,计数器并没有被调用,也就是计数器后台的计数值并没有增加。

 

Navigate是异步执行的,Webbrowser控件会通过触发DocumentCompleted事件来指示网页加载完毕。但当加载的网页包含frame时比如www.sina.com.cn,可能会多次触发该事

 

从微软的官方网站上了解到,并非每个frame都对应了一个DocumentCompleted事件,只有触发了Naviagted事件的frame才会有相应的DocumentCompleted事件。另外,最外层的frame总是最后触发DocumentCompleted事件。

 

以下是常用的三种方法,最后一种计数器方法大概是在Navigated事件中将计数器+1,在DcoumentCompleted中将计数器-1,当计数器==0时,说明目标页面加载并解析完毕。

 

 

Navigate方法是异步执行的,以下是单线程情况是的同步解决方案

 

 

不过建议用信号量解决这类等待操作!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值