-

C#开发Chrome内核浏览器(WebKit.net)
2023年5月2日发(作者:jsp session)

C#开发Chrome内核浏览器(

是对WebKit.Net封装,使用它.net程序可以非常

方便的集成和使用webkit作为加载网页的容器。这里介绍一下怎么用

它来显示一个网页这样的一个最简单的功能。

第一步:

下载 bin文件。别小看这一步,你不一定能下载成

功,原因你懂的。

的主页是

直接下载0.5版本的windows bin文件地址为:

第二步:

新建一个WindowsForms工程。

然后把下载好的 bin目录下的所有文件复制到新建工

程的bin/Debug/目录下。

添加引用,通过浏览添加对“”的引用。

第三步:

来写写代码了。双击Form1的窗体进入代码,写下这几行代码:

private void Form1_Load(object sender, EventArgs e)

{

Browser browser = new WebKitBrowser();

= ;

(browser);

te("");

}

运行看看效果:

IE内核的WebBrowser对比:

非常简单的三步就完成了。可是话说回来了,时下都流行一步到

位的,例如使用wser

使用.Net框架自带的,调用IE内核的WebBrowser来显示网页

也许更简单些,只需要在新建的工程中写下这么几行代码便可:

private void Form1_Load(object sender, EventArgs e)

{

WebBrowser browser = new WebBrowser();

= ;

(browser);

te("");

}

运行起来的效果看起来差不多,肉眼基本只能看出字体稍微不同

而已:

既然都差不多,那为什么还不厌其烦的去下载几个Mdll来显

示网页呢?这是因为如果使用IE内核的WebBrowser我们无法预知对

网页的显示效果,例如你的电脑是xp,可能会调用ie6作为加载器,

如果是win7,可能会调用ie8作为加载器,而他们的显示效果是不完

全一样的。下面用一个例子来看看。

这个页面是用来测试浏览器对css3的支持程度的。现在我们分别

2个方法来显示这个页面。

private void Form1_Load(object sender, EventArgs e)

{

WebBrowser browser = new WebBrowser();

= ;

te("");

(browser);

Browser kitBrowser = new WebKitBrowser();

= ;

te("");

(kitBrowser);

}

效果图如下:

本机的系统是win7+IE9,但是通过WebBrowser调用,估计仍

然使用的是IE8内核,所以显示效果很差。

通过这样左右对比,可以看出多了一步麻烦,是有必要的。

from/linyijia/p/

/**************************************************************

*********/

问:下载了一个第三方的内核浏览器插件(版本是

2011,调用网页中的js函数报错:对 COM 组件的调用返回了错误

HRESULT E_FAIL,不知道是因为缺少文件还是其他原因?webkit

件怎么调用网页上的js函数呢?拜托各位

答:花费了一些时间算是解决了总结一下结论,方便他人。

当需要在客户端显示网页时就要考虑用到浏览器插件,一个是MS

webbrowserwebkit

,googleopen-webkit-sharp,做手机用的qtwebkit

FirefoxGeoko引擎的Windows Forms包装),webbrowser

本上可以满足需要,但是有一些问题不好解决,比如:IE678差异

性大,用户不同的机器安装的IE内核不同,网页的兼容性,js脚本,

不支持html5元素的网页等;令人开心的是老外分享有开源的第三方

浏览器插件(下载地址: 一直没有更新最新版本2011),

可以很好的解决了上面的问题,使用跟webbrowser一样

方便,提供的类方法也是很类似,减少学习成本可以很快的上手;其

他的几个插件也是可以的,open-webkit-sharp目前更新版本3.0,完

善和更新了bug,不过复杂的配置安装过程,全英文的文档,网上也

有很多这方便的资料,有时间的或者有必要可以选择这个。

调用js函数:

//ntText =

// "Test </span><p><p style='text-indent:30px;top:1049.81;'><span style='font-size:20.34px;color:#161616;letter-spacing:-0.077px;font-family:MicrosoftYaHei;'>Page" +

// "

id="testelement" style="color: red">Hello,

World!

" +

// "

A

B

C

" +

// "" +

// "";

ptingEnabled = true;//启用js函数调用

string str =

ByEvaluatingJavaScriptFromString("Test()"

);//参数跟webbrowser有点不一样,方法名加括号,测试时不要直接

alert,好像没显示出来

两句代码,js函数定义到需要调用的网页里面,或者直接嵌入一

js也可以,比如上面注释的部分。

from:/q/50344/

/**************************************************************

********************/

c#winform中使用WebKit传递js对象实现与网页交互

有个项目要使用WebBroswer控件,并且要能传递一个js对象供

前台调用,用c#WebBroswer控件很容易实现:

[csharp] view plaincopy

1. private void Form1_Load(object sender, EventArgs e)

2. {

3. WebBrowser wb = new WebBrowser();

4. ForScripting = new myClass();

5. }

[csharp] view plain

1. private void Form1_Load(object sender, EventArgs e)

2. {

3. WebBrowser wb = new WebBrowser();

4. ForScripting = new myClass();

5. }

要传递的js对象必须使用[ComVisibleAttribute]标记为COM

见:

[csharp] view plaincopy

1. [ibleAttribute(tru

e)]

2. class myClass

3. {

4. public void Test()

5. {

6. ("alert:Test");

7. }

8. }

[csharp] view plain

1. [ibleAttribute(tru

e)]

2. class myClass

3. {

4. public void Test()

5. {

6. ("alert:Test");

7. }

8. }

这样前台就能使用al调用myClass的方法:

();

如果就这样那就简单了 ,可偏偏项目使用的网站对IE的兼容性极差

(吐槽下:个人觉得是IE太烂了,对标准的支持太差),无奈之下想找

寻其他类似的WebBrowser控件,发现几个不错的替换控件:

1. GeokoFx:一个FirefoxGeoko引擎的Windows Forms

google

/p/geckofx/ 官网:

2. :webkit.NET封装,下载地址:

本来决定使用GeokoFx,因为项目使用的网站用火狐打开是很快

的,但是我找了几天资料也没发现怎么传递个js对象给控件,当发现

Qtwebbroswer控件也是封装的WebKit控件时,遂决定使用

WebKit,但也没有直接提供传递对象的方法,后来发现

又一个好东西:

1. open-webkit-sharp:的又一次封装,提供了很多

新功能。google上下载地址:/p/open-

webkit-sharp/

下面的使用就非常简单了,下载open-webkit-sharp后,把Core

文件夹和References文件夹下所有文件拷贝到你的工程目录下,然后

(如果你的项目运行在.NET Framework 2.0 3.5

引用 Binary_NET2文件夹下的这两个文件,NET4.0的话就引用

Binary文件夹下的这两个dll);然后就是工具箱->选择项->选择

,然后从工具箱中把WebKitBrowser拖到你

的窗体上.现在已经成功了一大步了,但是为了避免使用时遇到各种错

误,我们需要先安装两个支持文件:

1. Microsoft C++ 2005

Redistributable /download/en/details.

aspx?id=26347Windows XP/Vista/7 32/64 Bit

2. Apple QuickTime (Optional - for better HTML5 Support)

Ready!开始传递对象:

[csharp] view plaincopy

1. private void Form1_Load(object sender, EventArgs e)

2. {

3. te("http://yourWebSiteUrl");

4. ntCompleted += new WebB

rowserDocumentCompletedEventHandler(webKitBrowser1_Doc

umentCompleted);

5. }

6. void webKitBrowser1_DocumentCompleted(object sender

, WebBrowserDocumentCompletedEventArgs e)

7. {

8. Object = ne

w myClass();

9. }

[csharp] view plain

1. private void Form1_Load(object sender, EventArgs e)

2. {

3. te("http://yourWebSiteUrl");

4. ntCompleted += new WebB

rowserDocumentCompletedEventHandler(webKitBrowser1_Doc

umentCompleted);

5. }

6. void webKitBrowser1_DocumentCompleted(object sender

, WebBrowserDocumentCompletedEventArgs e)

7. {

8. Object = ne

w myClass();

9. }

前台调用方式类似IEwebbroswer,也使用al

调用,你也可以自己定义一个对象:

[csharp] view plaincopy

1. teScript("va

r obj=al;");

[csharp] view plain

1. teScript("va

r obj=al;");

这样调用的时候就能用你自己定义的对象名访问了。

应该也有直接自己定义对象的方法,但是open-webkit-sharp

文的资料实在的不多,耐着性子看了几天老外的论坛,一水的全是吐

槽,实际解决问题的不多。等有更好的方法,也请大家不吝赐教。

转载 /jallymn/article/details/8271671

-

C#开发Chrome内核浏览器(WebKit.net)

更多推荐

chrome浏览器最新版下载