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#法式設計有所贊助。