飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

用“WebKit.NET”封装内核浏览器

Author:flymorn Source:flymorn
Categories:C#编程 PostTime:2011-8-11 0:05:32
正 文:
    由于Google Chrome采用了WebKit内核,由此使得WebKit内核浏览器的人气迅速攀升。对于庞大的webkit开源程序,普通程序员一般无需接触。通过WebKit.NET,我们也可以开发一些简单的浏览器。WebKit.NET 是一个 C# 的组件封装了 WebKit 浏览器引擎,通过它可以在 .NET 应用中简单的使用 WebKit 浏览器引擎。

    使用方法也很简单,首先到 http://webkitdotnet.sourceforge.net/ 下载webkit.net编译好的dll文件(Win32 Binary ),目前最新的是 2010-08-28 发布的 0.5 版本。

    然后把WebKitBrowser控件拉进工具箱:VS工具--》选择工具项--》.NET Framework组件--》浏览--》选择“WebKitBrowser.dll”,这时WebKitBrowser就应该出现在左侧的公共控件里了。使用的时候直接拖曳到窗口里使用即可,WebKitBrowser的使用方法和IE的内核webbrowser类似。

    WebKitBrowser简单用法

1、访问某个网页。
webKitBrowser1.Navigate("http://www.piaoyi.org");

2、加载网页完成时。
 private void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
        textBox1.Text = webKitBrowser1.Url.ToString ();
}

WebKit.NET内核浏览器

     需要注意的问题:
1、webkit目前只有32位版本的,因此如果你是64位windows系统,将无法正常使用。为了兼容,需要将调试平台的cpu选择为 X86(vs默认是 any cpu)。

2、需要把从网上下载下来的一大堆dll文件放在输出目录里,和 最终的可执行文件 sample.exe 放在一个目录里,不能放在其他文件夹或子目录,否则 WebKit 出错。

3、如果出错,检查引用里是否引用了 WebKit.Interop and WebKitBrowser.

     飘易认为的 WebKit.net 封装的 bug。

1、打开新窗口时的bug。
在事件 private void webKitBrowser1_NewWindowCreated(object sender, NewWindowCreatedEventArgs args)  和 private void webKitBrowser1_NewWindowRequest(object sender, NewWindowRequestEventArgs args) 里都无法正常获取新的 url 。

        
        private void webKitBrowser1_NewWindowCreated(object sender, NewWindowCreatedEventArgs args)
        {
            webKitBrowser1 = args.WebKitBrowser;
        }

        private void webKitBrowser1_NewWindowRequest(object sender, NewWindowRequestEventArgs args)
        {
            MessageBox.Show(args.Url); 
        }

2、DOM模型,如 webKitBrowser1.DocumentText 不好利用。

    当然,以上都是飘易个人之看法,不免贻笑大方。可以参考另外一种 C# GeckoFX内核浏览器
作者:flymorn
来源:flymorn
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:Twitter 新账户如何快速达到 2000 follower+!
下一篇:C# HttpWebRequest保存cookies模拟登录的方法!
16条评论 “用“WebKit.NET”封装内核浏览器”
2011-8-11 15:43:01
看的不是太懂...对这方面没有接触...
2011-8-11 21:33:44
嘿,上面的比我的来的还早呢
2011-8-12 16:19:51
我也没看懂,技术不到家。
4 gaowenbin
2011-9-4 9:01:08
您好!
    我最近在需要做一个能够抓取动态网页的爬虫,本来已实现IE内核抓取,但是考虑效率问题,想使用webkit内核。
    目前问题:我不知道如何获取dom请教博主 谢谢
5 飘易
2011-9-4 10:29:02
gaowenbin:

如果只是想抓取网页,没必要基于任何浏览器内核,直接底层 HttpWebRequest 读取即可。

webkit内核的dom不易控制。
6 gaowenbin
2011-9-4 10:49:56
动态的ajax数据通过HttpWebRequest无法获取到,你有什么好的方法吗
7 lsy6129
2011-12-30 10:22:09
不行,还是出错。提示Failed to initialize activation context,引用都引用了
8 lonsn
2012-2-27 23:58:35
打开新窗口时的bug,有什么好办法打开新窗口吗
9 littlefishli
2012-2-29 11:29:23
你好,我想问下如何处理cookie,例如,我在客户端导航到了一个网页,如何传递cookie进去?
10 c#
2012-6-24 21:56:08
你好,这个它出来的好像不是谷歌的耶,是火狐的吧?
2012-7-10 13:43:44
请问博主:他自身带不带缓存机制?
12 Alvin
2013-5-13 16:00:23
感觉这个占用很大的cpu,并且不及时释放资源,一直在吃内存。
13 超超
2013-12-8 22:58:52
愁啊,webkit.net 怎么设置代理贩贩
14 webkit.net 怎么设置代理
2014-9-18 21:07:57
请教:webkit.net 怎么设置代理
15 WebKit.net
2015-4-6 13:03:47
WebKit.NET 创建新页面无法获取url的问题有没有解决办法呢?我现在也碰到了这个问题。
16 愚神礼赞
2016-6-17 18:05:35
导入成功,启动调试报 0x800736B1 简直没办法了。
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2019 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有