WebBrowser控件判断完全加载中DocumentCompleted和Navigated的关系
WebBrowser控件判断完全加载使用DocumentCompleted是有问题的,所以有人提出可以使用判断DocumentCompleted的次数和Navigated次数完全相等的方法判断是否完全加载
并提出每次都会Navigated在DocumentCompleted之前执行,
此方案在本人测试后发现此两事件没有必然关系,并且也没先后次序
测试原理:
定义2个全局变量用于记录两事件次数,并使用一个计时器,即时判断当前两全局变量
如果最后两个值不相等,那么两事件不是同时必然发生,
如果出现同一时刻 DocumentCompleted的次数大于Navigated,那么前者就不一定是在Navigated之后执行了,不能确定两者的顺序关系
测试代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Configuration;
using System.Web;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text.RegularExpressions;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using mshtml;
using SHDocVw;
namespace TestCrass
{
public partial class Form5 : Form
{
System.Timers.Timer time = new System.Timers.Timer();
int qunue = 0;//当前轮次
int ced = 0;//DocumentCompleted次数
int ned = 0;//Navigated次数
int ning = 0;//Navigating次数
public Form5()
{
InitializeComponent();
time.Interval = 10;
time.Enabled = true;
time.Elapsed += new System.Timers.ElapsedEventHandler((ss, ee) => { button1_Click(ss,ee); });
}
private void button1_Click(object sender, EventArgs e)
{
Invoke((ThreadStart)delegate()
{
//此刻ced比ned大,说明DocumentCompleted事件触发次数大于Navigated,所以Navigated可能后发生
if (ned < ced)
{
label5.Text = "第"+qunue.ToString()+"次有问题"+ned.ToString()+".."+ced.ToString();
}
});
}
private void Form5_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://item.taobao.com/item.htm?id=21926784253");
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
ced++;
label4.Text = "ced" + ced.ToString();
if (webBrowser1.DocumentText.Contains("无法显示该网页") || webBrowser1.DocumentText.Contains("已取消") || webBrowser1.DocumentText.Contains("可以尝试以下操作"))
{
webBrowser1.Refresh();
return;
}
//time.Enabled = true;
//button1_Click(null, null);
}
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
ned++;
label3.Text = "ned" + ned.ToString();
}
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
ning++;
qunue++;
label1.Text = "qunue" + qunue.ToString();
label2.Text = "ning" + ning.ToString();
}
private void button2_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(textBox1.Text);
}
private void button3_Click(object sender, EventArgs e)
{
ced = 0;
ned = 0;
ning = 0;
qunue = 0;
label1.Text = "";
label2.Text = "";
label3.Text = "";
label4.Text = "";
}
}
}
测试淘宝,如之前的错误结论,可以通过测试,
找个复杂点的网站 www.163.com
测试
结果是Navigated次数才33次,还少1次,所以据此说明,之前的他人说法是不对的
据此方法来判断是否加载完也是不对的,
通过多方查找
有一种方法可以完全判断是否加载完成:
正在测试中
转载于:https://www.cnblogs.com/sung/archive/2013/01/07/2849059.html
WebBrowser控件判断完全加载中DocumentCompleted和Navigated的关系相关推荐
- C# .NET 6.0已经取消了Framework 4.8的WebBrowser控件,几款NuGet中的浏览器控件介绍
即使在C# .NET 6.0..NET 7.0在选择工具箱项COM组件添加Microsoft Web Browser,工具箱也没有WebBrowser控件. WebBrowser控件: WebBrow ...
- jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法
博客分类: jquery-easyui jQueryAjax框架HTML 现象: AJAX返回的html无法做到自动渲染为EasyUI的样式.比如:class="easyui-layout ...
- 安卓案例:列表控件上拉加载更多
文章目录 一.上拉加载更多使用场景 二.案例演示 - 列表控件上拉加载更多 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[ListViewLoadMore] 2.将背景图片拷贝到 ...
- asp.net读取用户控件,自定义加载用户控件
1.自定义加载用户控件 ceshi.aspx页面 <html><body> <div id="divControls" runat="ser ...
- wps office oa控件 痕迹_WPS加载项案例应用回顾
2019年的武汉,金山办公召开了第一届开发者大会,主题是「开放赋能.合作共赢」,2020年8月29至30日,在重庆召开了第二届,主题是「在一起.创未来」.上一届发布了WPS PC Office的WPS ...
- windowmediaplayer控件出现未能加载的问题
问题:当添加windowsmediaplayer控件后,有时候会发现窗体设计器出现下图提示,无法加载设计器. 方法:将该方案的属性中生成选项下的平台目标选择anycpu(自己莫名将平台目标设置成X64 ...
- FlexCell控件初始化以及加载数据集[原创]
'================================写在之前的话 抱歉,一直没有时间,所以FlexCell作者给我的几种加载数据集方法的代码一直没有发出来. 同时再次感谢FlexCell ...
- 树的懒加载怎么用ajax调接口,ElementUI tree树形控件的懒加载使用
先看效果: image 1.界面中: :data="treeData" :props="defaultProps" :load="loadNode&q ...
- winform窗体控件多,加载慢、卡顿的解决办法
protected override CreateParams CreateParams{get{CreateParams cp = base.CreateParams;cp.ExStyle |= 0 ...
最新文章
- 锁定弹出层(jquery语法)
- leetcode514. 自由之路(dp)
- linux桌面版自动更新关闭了,桌面应用|开启 Ubuntu 系统自动升级
- Centos5.11 使用yum源
- css+div导航条样式
- [leetcode]5354. 通知所有员工所需的时间
- 如何修改默认字体_Excel技巧:怎么修改默认字体为宋体
- android仿qq空间、微信朋友圈图片展示
- NumPy库---Axis理解
- Java后台开发入门
- 计算机SCV原理指什么,csv是什么文件格式?.csv文件怎么打开?
- 读取npy格式的文件
- Foxmail设置雅虎邮箱的方法
- 关于想写我与Java的故事,满脑子却都是与JavaCV纠缠不清的那段日子
- Win10修复Linux引导
- 诊所信息管理系统C语言课程设计
- while及do while语句
- php 循环 解方程,解方程. 40%X=12080%X-60%X=1.26X+48=168X+20%X=24X-x5=1
- matlab 矩阵绘三维图
- 2021-2027全球与中国实时操作系统市场现状及未来发展趋势
热门文章
- 聊聊单体应用的 4 点不良影响,第 4 点很痛很真实
- 服务部署如何做到高可用?这份“三级跳”秘籍送给你
- Android 面试 - 有关Service的面试题
- php防止重复结算问题_PHP 编写关系到财务这样重要的系统,设计应该每次变动都算账,还是月底统一算账?...
- mysql子查询缺点_[慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
- linux 普通用户crond,linux下普通用户的定时任务
- 国内数据中心分布及供电系统概述
- 模块化数据机房具备的五大优势
- 带你看看获得鲁班奖的数据中心工程建设的有多完美!!
- Computer:成功解决安装软件时需要系统空间环境辅助程序(比如Microsoft Visual C++2010 x86 Redistributable安装失败)