作者:mobiledu2502927067 | 来源:互联网 | 2023-07-21 19:10
1.使用C#自带webbrowser方式网页兼容性不太好,而且需要系统本身高版本ie。2.C#自带webbrowser对于dom元素等执行效率低下。好了下面上菜&
1.使用C#自带webbrowser方式网页兼容性不太好,而且需要系统本身高版本ie。
2.C#自带webbrowser对于dom元素等执行效率低下。
好了下面上菜:EO.WebBrowser目前版本是20.3.63 但是未使用过,目前程序使用15.1.94.2版本,此版本安装后会自动在工具箱安装webControl,webView控件。替代webbrowser则主要使用这两个控件即可,我安装了高版本的程序,未发现这两个控件,可能是姿势不对把,就安装了个低版本的。
如果安装高版本的未发现控件客尝试使用代码方式试试:
private EO.WebBrowser.WinForm.WebControl webControl1;
private EO.WebBrowser.WebView webView1;private void InitializeComponent()
{this.webControl1 = new EO.WebBrowser.WinForm.WebControl();this.webView1 = new EO.WebBrowser.WebView(); this.panel1.Controls.Add(this.webControl1);this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;this.panel1.Location = new System.Drawing.Point(3, 17);this.panel1.Name = "panel1";this.panel1.Size = new System.Drawing.Size(682, 307);this.panel1.TabIndex = 1;// // webControl1// this.webControl1.BackColor = System.Drawing.Color.White;this.webControl1.Dock = System.Windows.Forms.DockStyle.Fill;this.webControl1.Location = new System.Drawing.Point(0, 0);this.webControl1.Name = "webControl1";this.webControl1.Size = new System.Drawing.Size(682, 307);this.webControl1.TabIndex = 4;this.webControl1.Text = "webControl1";this.webControl1.WebView = this.webView1;// // webView1// this.webView1.AllowDropLoad = true;this.webView1.BeforeSendHeaders += new EO.WebBrowser.RequestEventHandler(this.webView1_BeforeSendHeaders);this.webView1.NewWindow += new EO.WebBrowser.NewWindowHandler(this.webView1_NewWindow);this.webView1.CertificateError += new EO.WebBrowser.CertificateErrorHandler(this.webView1_CertificateError);
}
下面详细说下这三个事件的使用:
BeforeSendHeaders在请求发送前事件:我们可以通过此请求拦截某固定请求的信息,哪些信息就不用我说了把嘿嘿。。
webView1_NewWindow这个必须要注册不然在页面中用户点击会显示异常弹窗,为什么?(因为你没付钱啊。)
webView1_CertificateError这个必须要注册不然固定时间会一直弹窗提示你没安装证书,因为你没付钱啊。
我们使用webbrowser可以很方便的获取当前登录网站的COOKIE信息,注意(webbrowser是基于ie内核,相当于你登录在IE上,如果每次不清除缓存会串。。。)EO.WebBrowser则不会
但是也面临一个问题获取登录COOKIE难搞哦。。。所以BeforeSendHeaders帮助了我们一下。
private void webView1_BeforeSendHeaders(object sender, EO.WebBrowser.RequestEventArgs e)
{var info = e.Request.COOKIEs.AllKeys;
}
EO.Base.Runtime.Exception += new EO.Base.ExceptionEventHandler(webView1_ExceptionError);这个事件自己注册把,EO运行时异常处理。
——————————————————————————————
下面来点js的处理
string script = "document.getElementById('loginid').value";
var info = webView1.EvalScript(script);//获取js执行的返回值,注意js执行会报错,需要进行异常处理。