程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#在WinForm中應用WebKit傳遞js對象完成與網頁交互的辦法

C#在WinForm中應用WebKit傳遞js對象完成與網頁交互的辦法

編輯:C#入門知識

C#在WinForm中應用WebKit傳遞js對象完成與網頁交互的辦法。本站提示廣大學習愛好者:(C#在WinForm中應用WebKit傳遞js對象完成與網頁交互的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#在WinForm中應用WebKit傳遞js對象完成與網頁交互的辦法正文


本文實例講述了C#在WinForm中應用WebKit傳遞js對象完成與網頁交互的辦法。分享給年夜家供年夜家參考,詳細以下:

有個項目要應用WebBroswer控件,而且要能傳遞一個js對象供前台挪用,用c#的WebBroswer控件很輕易完成:

private void Form1_Load(object sender, EventArgs e)
{
  WebBrowser wb = new WebBrowser();
  wb.ObjectForScripting = new myClass();
}

要傳遞的js對象必需應用[ComVisibleAttribute]標志為COM 可見:

[System.Runtime.InteropServices.ComVisibleAttribute(true)]
class myClass
{
  public void Test()
  {
    System.Windows.Forms.MessageBox.Show("alert:Test");
  }
}

如許前台就可以應用window.external挪用myClass的辦法: window.external.Test();

假如就如許那就簡略了 ,可恰恰項目應用的網站對IE的兼容性極差(吐槽下:小我認為是IE太爛了,對尺度的支撐太差),無法之下想找尋其他相似的WebBrowser控件,發明幾個不錯的調換控件:

GeokoFx:一個Firefox的Geoko引擎的Windows Forms包裝,谷歌上的下載地址:http://code.谷歌.com/p/geckofx/ 官網:http://www.geckofx.org/
WebKit.NET:webkit的.NET封裝,下載地址:http://sourceforge.net/projects/webkitdotnet/

原來決議應用GeokoFx,由於項目應用的網站用火狐翻開是很快的,然則我找了幾天材料也沒發明怎樣傳遞個js對象給控件,當發明Qt的webbroswer控件也是封裝的WebKit控件時,遂決議應用WebKit,但WebKit.NET也沒有直接供給傳遞對象的辦法,後來發明又一個好器械:

open-webkit-sharp:對webkit.net的又一次封裝,供給了許多新功效。谷歌高低載地址:http://code.谷歌.com/p/open-webkit-sharp/

上面的應用就異常簡略了,下載open-webkit-sharp後,把Core文件夾和References文件夾下一切文件拷貝到你的工程目次下,然後翻開你的項目,添加援用OpenWebKitSharp.dll和WebKit.Interop.dll(假如你的項目運轉在.NET Framework 2.0 或 3.5 援用 Binary_NET2文件夾下的這兩個文件,NET4.0的話就援用Binary文件夾下的這兩個dll);然後就是對象箱->選擇項->選擇OpenWebKitSharp.dll,然後從對象箱中把WebKitBrowser拖到你的窗體上.如今曾經勝利了一年夜步了,然則為了不應用時碰到各類毛病,我們須要先裝置兩個支撐文件:

Microsoft C++ 2005 Redistributable http://www.microsoft.com/download/en/details.aspx?id=26347Windows XP/Vista/7 32/64 Bit

Apple QuickTime (Optional - for better HTML5 Support)
Ready!開端傳遞對象:

private void Form1_Load(object sender, EventArgs e)
{
  this.webKitBrowser1.Navigate("http://yourWebSiteUrl");
  this.webKitBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webKitBrowser1_DocumentCompleted);
}
void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
  this.webKitBrowser1.GetScriptManager.ScriptObject = new myClass();
}

前台挪用方法相似IE的webbroswer,也應用window.external挪用,你也能夠本身界說一個對象:
this.webKitBrowser1.GetScriptManager.EvaluateScript("var obj=window.external;");

如許挪用的時刻就可以用你本身界說的對象名拜訪了。

應當也有直接本身界說對象的辦法,然則open-webkit-sharp中文的材料其實的不多,耐著性質看了幾天老外的服裝論壇t.vhao.net,一水的滿是吐槽,現實處理成績的不多。等有更好的辦法,也請年夜家不惜賜教。

願望本文所述對年夜家C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved