zoukankan      html  css  js  c++  java
  • WebKit.NET-0.5简单应用

     最近想用c#做个简单的浏览器工具,但是网站一些内容不支持c#内置的WebBowser控件,于是只能改用其他内核浏览器进行开发,搜索到WebKit.NET这个封装好的浏览器引擎,需求的功能也都有,于是用WebKit.NET进行开发。

            WebKit.NET官网 http://webkitdotnet.sourceforge.net/

            WebKit.NETgithub https://github.com/webkitdotnet/webkitdotnet/tree/develop/WebKitBrowser

            直接下载0.5版本的windows bin文件地址为:https://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download

            项目使用WebKit.NET

            一:把下载解压好的WebKit.NET-0.5-bin-cairoin目录文件复制到项目inDebug下面

            

            二:添加引用”WebKitBrowser.dll“

            

            三:引用之后在“工具箱-常规”里面应该有”WebKitBrowser“

            

            四:项目使用

            可以手动写代码添加”WebKitBrowser“也可以在工具箱拖控件进去

            代码示例

                    WebKitBrowser browser = new WebKitBrowser();
                    browser.Dock = DockStyle.Fill;//充满窗口
                    this.Controls.Add(browser);//添加至窗体 或 容器

            WebKitBrowser的使用

            一:WebKitBrowser打开指定连接

                    browser.Navigate(url);

            二:WebKitBrowser弹出连接的获取

                    WebKitBrowser弹出新链接是直接在系统默认浏览器打开的,我们需要进行修改获取WebKitBrowser弹出的新链接地址,再进行操作

                    this.browser.NewWindowCreated += new WebKit.NewWindowCreatedEventHandler(this.browser_NewWindowCreated);
                    private void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
                    {
                            e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);
                            e.WebKitBrowser.Location = new Point(2000, 2000);
                            this.Controls.Add(e.WebKitBrowser);
                    }
                    void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
                    {
                            //WebKitBrowser弹出的新链接地址
                            string url = e.Url.ToString();
                    }

                    如果是拖控件操作的,在WebKitBrowser控件”属性-事件“双击NewWindowCreated后进行编辑即可

                    private void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
                    {
                            e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);
                            e.WebKitBrowser.Location = new Point(2000, 2000);
                            this.Controls.Add(e.WebKitBrowser);
                    }
                    void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
                    {
                            //WebKitBrowser弹出的新链接地址
                            string url = e.Url.ToString();
                    }

            三:WebKitBrowser执行js

                    string strScript = "function GetSpanContent(){return document.getElementById('span').innerText;}GetSpanContent();";
                    string result = browser.StringByEvaluatingJavaScriptFromString(strScript);

                    具体操作过程中,发现有些js在chrome可以执行,在WebKitBrowser执行会报错,比如document.getElementById('span').innerHTML需写成document.getElementById('span').innerText没有查到资料,可能是有些语句不支持,如果执行语句出错可以换种写法试试。

                    另外要注意的是,试了一下,页面后期添加的元素,是取不到的,有解决方法可以留言讨论下

            四:WebKitBrowser页面代码

                    WebKitBrowser页面代码属性是browser.DocumentText。有时候不用执行js直接用这个属性去获取判断一些东西也是可以的。

            WebKitBrowser的使用例子

            private void btnLogin_Click(object sender, EventArgs e)
            {
                    Log("开始登录操作");
                    try
                    {
                            if (browser != null)
                            {
                                    string strScript = "document.getElementById('txtUserName').value='" + txtUser.Text.Trim() + "';document.getElementById('txtPassword').value='" + txtPassword.Text.Trim() + "';document.getElementById('btnLogin').click();";
                                    browser.StringByEvaluatingJavaScriptFromString(strScript);
                                    Log("登录操作完成!");
                            }
                    }
                    catch (Exception ex)
                    {
                            Log("登录失败!");
                    }
            }

            上面代码是演示了下怎么进行自动登录操作,具体需求可通过js完成的WebKit.NET应该都是能完成的。

            

  • 相关阅读:
    对象属性键值[key]属性问题
    理解 JavaScript 中的 for…of 循环
    vue初学篇----过滤器(filters)
    CSS变量
    SCSS !default默认变量
    vue 集成 NEditor 富文本
    如何在Github上面精准搜索开源项目?
    OSS介绍
    键盘各键对应的编码值(key code)
    网易云音乐歌单生成外链播放器
  • 原文地址:https://www.cnblogs.com/soundcode/p/13976648.html
Copyright © 2011-2022 走看看