首页 新闻 会员 周边

请问什么叫WebBrowser延迟读取DocumentText

0
悬赏园豆:100 [已关闭问题]

今天在博客上看到有人提到WebBrowser延迟读取DocumentText,在google上查了一下,没有这方面的信息,哪位高手给解释一下。请给一个简单代码示例,谢谢。

雪貂的主页 雪貂 | 初学一级 | 园豆:90
提问于:2010-01-28 19:59
< >
分享
其他回答(4)
0

先明白一个概念,延迟加载:一般指在类实体化例的时候,并没有加载“某一些东西”,而是等到调用的时候,才加载。

简单的说是在类的构造函数里没有实例化或调用其它东西,而是等到调用某个方法时再实例化其它类或调用其它东西。

路过秋天 | 园豆:4787 (老鸟四级) | 2010-01-29 09:57
0

当你使用webBrowser.Navigate(Url)访问一个网页之后,

立马去取webBrowser.DocumentText基本上是取不到有效内容的.

因为Navigate之后,你请求的网页内容还没有下载完.要等网页内容全部下载完,webBrowser才会给DocumentText属性赋值,之后才会有webBrowser.Document.

也许这个就是你问的:WebBrowser延迟读取DocumentText.

三阶 | 园豆:1436 (小虾三级) | 2010-01-29 10:28
0

说白了就是页面中有一个标题和一个div容器还有js代码,用户浏览时先看到标题,页面加载完自动执行了js代码,js又去调用服务端数据将文章内容取回,并显示在div容器中。而不是页面本来在div中就有文章内容。

使用这种方法的原因有很多,一是可以屏蔽爬虫的抓取,二是不必有一点修改就重新生成所有静态页面数据,三是有较好的用户体验,让用户先看到重要的内容,不重要的延迟读取可以加快其他内容的显示速度。

弊端呢,一是ajax接口可能被人滥用,二是request请求增多,三是编程调试难度增大。

 

也有可能是楼上的说法。

风海迷沙 | 园豆:4453 (老鸟四级) | 2010-01-29 10:36
0

因为提交请求和相应需要时间来完成这一过程嘛,当你navigate(url)之后不可能马上就能得到完整的DocumentText,那需要文档加载完毕才能拿到,所以你要在documentcomplete事件里面去获取DocumentText。但是如果有几个frame的话每加载完一个frame就会执行一次事件,所以你也需要判断frame是不是你需要的,这个可以通过url或者文档内容区判断。

Tom-X | 园豆:515 (小虾三级) | 2010-02-05 17:51
0

兄弟,还是不行的。

比较这个网站的行情数据:

http://finance.sina.com.cn/money/globalindex/index.shtml

用webbrowser加载完成后在源文件中还是不能得到。

.NET快速开发框架 | 园豆:946 (小虾三级) | 2012-04-27 16:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册