webBrowser1_DocumentCompleted不停被调用
原文地址:http://blog.csdn.net/shuishenlong/article/details/7950576
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况。
1、WebBrowser载入一个页面后DocumentCompleted事件会执行两次,但这两次的ReadyState状态不一样,分别是Intercative和Complete。而MSDN对这两种状态值的解释是:Complete该控件已完成新文档及其所有内容的加载;Interactive该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。由此可见,实际上DocumentCompleted事件会在Interactive状态和Complete状态各调用一次,那么我们可以根据我们的需要来判断到底需要那一次。解决办法实例代码如下:
if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete)
return;
2、如果一个页面中含有多个框架页,那么在每个框架页加载完成时也可能触发一次DocumentCompleted事件(MSDN对其解释是在多个的帧的情况下DocumentComplete获取触发多次。并非每个框架将触发此事件,但触发DownloadBegin事件的每个框架将触发相应的DocumentComplete事件)。这种情况下解决办法实例代码如下:
if(e.Url.ToString()!=webBrowser1.Url.ToString())
return;
此外,MSDN给出了另外一种方案,详见:
3、对于以上两种情况我是没遇到,却碰到了第三种情况:在我的DocumentCompleted事件里执行了相应的代码,结果又触发了一次DocumentCompleted事件,如此循环往复,没完没了。使用webBrowser1.Stop(),还是没法停止。webBrowser1.Nagviate("about:blank")问题还是依旧。这时候我们只能卸载DocumentCompleted事件了,即在DocumentCompleted事件里执行完你需要的代码后,再来一句:
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
webBrowser1_DocumentCompleted不停被调用的更多相关文章
- AS与JS相互通信(Flex中调用js函数)
转载自http://www.blogjava.net/Alpha/archive/2009/06/27/284373.html Flex中As调用Js的方法是: 1.导入包 (import f ...
- JS按照指定的周期来调用函数方法
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...
- JavaScript setInterval(定时/延时调用函数)
setInterval是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式.setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭. 由 ...
- setInterva()调用
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...
- js实现定时调用的函数setInterval()
setInterval是一个实现定时调用的函数,可按照指定的周期(以毫秒计)来调用函数或计算表达式.setInterval方法会不停地调用函数,直到 clearInterval被调用或窗口被关闭 定义 ...
- 如何用setInterval调用类的方法
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式.setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 se ...
- 【JavaScript】关于 setInterval() 调用函数方法的一次实验
实验主题: setInterval() 方法是 JS 中比较常用的一个方法.setInterval() 方法可以按照指定的周期 ( 毫秒 ) 来调用函数方法或计算表达式. setInterval() ...
- vue单页应用中,使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据。
使用VUE开发单页项目时遇到这样的问题,mounted中使用setInterval()定时向服务器获取数据,后来跳转页面后,发现还在不停的获取数据.我以为是因为我路由用的push导致的,改成repla ...
- Storm
2016-11-14 22:05:29 有哪些典型的Storm应用案例? 数据处理流:Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去.不像其它的流处理系统,Storm不 ...
随机推荐
- Base64.java 工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- Spring Data JPA教程, 第八部分:Adding Functionality to a Repository (未翻译)
The previous part of my tutorial described how you can paginate query results with Spring Data JPA. ...
- Linux命令行访问网页
找到个好资料,备份行: http://hi.baidu.com/oyvfhp/blog/item/3aa5ced5b40563d351da4bb0.html CURL --- 命令行浏览器 这东西 ...
- 调用Dll里面的窗体
将窗体资源分装到DLL中并且调用 用Delphi生成DLL并封装窗体的示例 调用Dll里面的窗体 DLL文件 library Project2;{ Important note about DLL m ...
- SAP BW 平面文件创建信息立方体
T-CODE:RSA1 1.创建信息范围 2.创建信息范围 创建特性信息对象目录 创建关键指标信息对象目录 3.创建特性信息对象 依次创建客户,销售组织 4.创建关键指标 依次创建单价和金额 5.创建 ...
- LVS 详解
http://zh.linuxvirtualserver.org/node/25 http://chrinux.blog.51cto.com/6466723/1198748 http://www.cn ...
- slots - Python的结构体 转
上个月看了篇文章 “SAVING 9 GB OF RAM WITH PYTHON’S __SLOTS__”,原来Python也有类似结构体的东东.拖了一个月才写这篇,是因为太久没看pyth ...
- Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST
说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...
- 目录操作函数opendir、readdir和closedir
首先,明确一个类型DIR的含义: #include <dirent.h> DIR A type representing a directory stream. DIR是在目录项格式 ...
- Jquery_异步上传文件多种方式归纳
1.不用任何插件,利用iframe,将form的taget设为iframe的name,注意设为iframe的id是没用的,跟网上很多说的不太一致 iframe_upload.htm <!DOCT ...