如何处理页面多次加载的问题

原创 2011年03月03日 17:10:00

工作中需要读取一个网页的内容,貌似很简单,但总也读不到完整的内容。经过页面分析,原来该页面的部分内容是通过调用js来获取的。再一看被调用的js文件,相当复杂,立刻让我打起了退堂鼓。。。 为了省点事,加之不用太考虑效率的问题,我就改用WebBrower控件来读取页面,然后再从WebBrowser控件的InnerText属性获取文本内容。

 

但如何从WebBrowser控件来获取文本呢? 我开始在DocumentCompleted事件中读取InnerText,但结果不行,仍然是不完整的内容。后来上网了解到对于动态页面,DocumentCompleted事件其实是不可靠的,你需要自己判断页面是否加载完毕,在加载完毕后再去读取InnerText属性。

 

看了网上的一些做法,没找到简单易行的,最后自己探索了一个方法,对于效率要求不高的情况下,可以考虑使用。

 

1、增加一个Timer,设定好间隔事件。

2、在全局变量中增加一个变量做标志。

3、在WebBrowser的DocumentCompleted事件中把标志设为true;

4、在Timer的Tick事件中检测标志为false则返回,为true则下一步。

5、在Timer的Tick事件中检测WebBrowser的Document属性的All属性(可能是All[1]这样的)的InnerText值,如果出现了页面完成时的标记(根据实际情况设置)则对InnertText进行后续处理,并关闭Timer。否则返回。

6、如果是循环调取页面,那还需要在处理完InnerText后恢复标志的值为false,同时给WebBrowser设定新的Url。

 

综上,其原理就是每间隔一定事件检测一下WebBrowser的状态和属性,直到出现了自己需要的内容再进行处理。该方案可以通过调整Timer的间隔时间获得一个较为理想的处理效率。

相关文章推荐

受css内嵌样式中使用 url 影响,页面出现多次加载问题

页面内嵌样式表中使用url(), 出现页面多次载入问题解决 来源:互联网 作者:佚名 时间:11-20 08:44:40 【大 中 小】 在最近的一个项目中,为了跟踪用户的登录的次...

通过jquery load在list页面多次加载详情页,导致的多form校验以及提交问题

jquery 多次load进来的同一个页面,多form校验,提交

Html元素引起多次加载页面的问题分析

Html元素引起多次加载页面的问题,主要分析了button、src、herf三种情况。

PHP 加载一次页面时, 浏览器请求多次, 导致出错

问题描述: 在一个项目中, 有一段统计页面浏览次数的代码, 其实现的方式是, 每次页面加载, 就 UPDATE SET 一次, 给数据表中对应的值加一. 碰到的一个问题是, 刷新页面时...

Javascript在ajax提交过程中页面显示加载中,请等待效果,并在提交过程中限制确定按钮防止多次提交,提交完成后,解除提交限制

加载中,请等待... 加载中,请等待效果图的CSS样式,设置其至页面中央:.center-in-center{             position: absolute;            ...

Android listview&gridview getview 方法多次调用问题解决方法 并附上单页加载实现问卷调查适配器源代码

一 、 关于listview 的问题     (1)情况一:      今天在改毕设代码的时候,突然发现一个奇怪的现象,就是在在定义的listview中有一个imageview和一个textvie...

GridView 中getview方法position 0 加载多次问题

GridView 中getview方法position 0 加载多次问题
  • soblu_e
  • soblu_e
  • 2015年03月26日 16:41
  • 1155

Python 被导入模块多次被加载的问题(基于python的import机制)

今天遇到了一个问题,我一个被导入模块的代码被执行了两次。一直听说python的module中的变量可以做单例的,怎么会执行多次呢。查看了一下 引用这个module的代码后发现,我两处的引用代码写的不太...

WebView 重定向行为导致的多次加载问题

使用 WebView 时,我们通常会重写以下方法: shouldOverrideUrlLoading() onPageStarted() onPageFinished()WebView ...

ViewPager预加载问题和onCreateView多次调用问题的解决

1,在使用ViewPager嵌套Fragment的时候,由于ViewPager的几个Adapter的设置来说,都会有一定的预加载(默认是左右各一个Frament)。通过设置setOffscreenPa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何处理页面多次加载的问题
举报原因:
原因补充:

(最多只允许输入30个字)