WebBrowser DocumentCompleted

简介:
关于DocumentCompleted事件,MSDN给出的解释是在文档加载完毕后执行,但是在我的程序中DocumentCompleted却被多次调用,查了一下资料,大概出现了以下几种情况。

1、WebBrowser载入一个页面后DocumentCompleted事件会执行两次,但这两次的ReadyState状态不一样,分别是Intercative和Complete。而MSDN对这两种状态值的解释是:Complete该控件已完成新文档及其所有内容的加载;Interactive该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。由此可见,实际上DocumentCompleted事件会在Interactive状态和Complete状态各调用一次,那么我们可以根据我们的需要来判断到底需要那一次。解决办法实例代码如下:
ExpandedBlockStart.gif
if(webBrowser1.ReadyState!=WebBrowerReadyState.Complete)
    
return;
2、如果一个页面中含有多个框架页,那么在每个框架页加载完成时也可能触发一次DocumentCompleted事件(MSDN对其解释是在多个的帧的情况下DocumentComplete获取触发多次。并非每个框架将触发此事件,但触发DownloadBegin事件的每个框架将触发相应的DocumentComplete事件)。这种情况下解决办法实例代码如下:
ExpandedBlockStart.gif
if(e.Url.ToString()!=webBrowser1.Url.ToString())
    
return;

此外,MSDN给出了另外一种方案,详见:
3、对于以上两种情况我是没遇到,却碰到了第三种情况:在我的DocumentCompleted事件里执行了相应的代码,结果又触发了一次DocumentCompleted事件,如此循环往复,没完没了。使用webBrowser1.Stop(),还是没法停止。webBrowser1.Nagviate("about:blank")问题还是依旧。这时候我们只能卸载DocumentCompleted事件了,即在DocumentCompleted事件里执行完你需要的代码后,再来一句:
ExpandedBlockStart.gif
webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);


本文转自lidup 51CTO博客,原文链接:http://blog.51cto.com/lidup/296258,如需转载请自行联系原作者

相关文章
|
C#
C# 修改webbrowser 的 useragent
Also, there is a refresh option in the function (according to MSDN). It worked well for me (you should set it before any user agent change).
2706 0
webBrowser 加载网页
事件   webBrowser_DocumentCompleted      private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser.
722 0
|
Web App开发 C#
C#中WebBrowser控件的使用
今天在YouTube上看了一个关于WebBrowser控件用法的小视频,做一下总结。 首先创建一个WinForm程序,拖入一个textbox控件和一个button按钮,然后拖入一个panel控件,如图所示: 拖入panel控件后,找到WebBrowser控件并双击,WebBrowser控件就...
1270 0
|
JavaScript 前端开发 C#
C#中WebBrowser的使用
原文:C#中WebBrowser的使用   其实网络上这类文章很多,我大致从头说说我自己的经验。 1、加入引用   在控件栏按右键,选择“添加/移除项”,选COM组件,选中“Microsoft Web Browser”。
1083 0
|
开发工具 JavaScript 前端开发
WebBrowser
原文:WebBrowser 做WEB开发的想把网页做成应用程序的界面,开发应用程序的又想把程序界面做得和WEB一样。本文介绍一下用HTML做软件UI用到的的一些技术。 其实HTML UI也不是什么新鲜事了,Norton Antivirus从几年前的版本就开始用了,vs.net2002中的开始页也用了这个技术。
902 0
|
JavaScript
webBrowser.execWB的完整说明
原文:webBrowser.execWB的完整说明 在不是js打开的页面上按window.close(), 会有提示框,很烦,现在可以不用了,没有提示框直接关闭窗口。试试下面代码: 试着改变参数会得到其他一些功能: WebBrowser.
915 0
WebBrowser!
原文:WebBrowser! 我现在先放一些基础的文章在这里,以后再放别的上来官方范例连接http://www.microsoft.com/china/msdn/library/langtool/vcsharp/OvervwWebBrowExp.mspxQ&A    2005年5月21日 0:14:19 Q: 新键入的地址不能在新建好的窗口里打开:A:每个新窗口(或者是Tab页)新建的时候也要新建一个浏览器,然后新建的浏览器的父框架是新建的那个窗口(或者是Tab页)。
871 0