zoukankan      html  css  js  c++  java
  • 如何判断axwebbrowser中的一段脚本已经执行完毕

    如何判断axwebbrowser中的一段脚本已经执行完毕

    PS:Document_Complete   是可以捕捉的到的 

    但是一个网页的加载会捕捉多次,需要结合  webBrowser1_ProgressChanged事件   来确定为一的一次加载完毕操作 ,

    同时参考 http://www.cnblogs.com/LYunF/archive/2012/08/31/2665200.html

    注意:其中的 autoEventReadUrlOk 被触发后会自动关闭

            private void webBrowser1_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
            {
                String strMsg = String.Format(@"e.CurrentProgress == {0} && e.MaximumProgress == {1} && OldProgress == {2} sender={3}",
                                              e.CurrentProgress, e.MaximumProgress, OldProgress, sender.GetHashCode().ToString());
                Debug.WriteLine(strMsg);
                
                if (ProcClass.nThreadStep ==2)
                {
                    //Debug.WriteLine(strMsg);
                    if (e.CurrentProgress == 0 && e.MaximumProgress == 0 )//&& (-1 == OldProgress  || OldProgress == 10000))
                    {
                        ProcClass.autoEventReadUrlOk.Set();
                        Debug.WriteLine("!!!ok");
                    }
                }
                OldProgress = e.CurrentProgress;
            }

    事件触发后的处理

               //  sec.2  跟踪 Webbrowser加载过程,直到 IE 加载完毕
                ProcClass.nThreadStep = 2;
                ProcClass.autoEventReadUrlOk.WaitOne(45000);
                //10秒内没有新的进度进来才继续
                TimeSpan pretime = new TimeSpan(DateTime.Now.Ticks);
                TimeSpan curtime = new TimeSpan(DateTime.Now.Ticks);
                TimeSpan delttime = curtime.Subtract(pretime).Duration();
                while (delttime.Ticks < 100000000)   
                {
                    curtime = new TimeSpan(DateTime.Now.Ticks);
                    delttime = curtime.Subtract(pretime).Duration();
                    if ( ProcClass.autoEventReadUrlOk.WaitOne(1000) )
                    {
                        //  收到的新的消息
                        pretime = new TimeSpan(DateTime.Now.Ticks);
                    }
                }
                ProcClass.nThreadStep = 3;
  • 相关阅读:
    mysql中txt的导入及导出
    邮箱手机正则
    用yum安装完mysql后没有mysqld的问题
    利用php在图片上写字(中英文)
    修改MYSQL密码及权限
    mysql 索引!
    MySQL对表的复制,修改及删除
    防止表单重复提交!
    Linux学习篇SVN命令详解
    Linux 安装PHP配置参数
  • 原文地址:https://www.cnblogs.com/carl2380/p/2689317.html
Copyright © 2011-2022 走看看