最近因爲工做須要,研究了下Winform的WebBrowser控件,在這裏給你們分享下。javascript
一、WebBrowser導航html
WebBrowser在進行導航的時候須要用到Navigate(string urlString)方法java
二、執行已有的JavaScript函數jquery
使用WebBrowser.Document.InovkeScript(string scriptName)json
三、執行自定義的Javascript函數ide
這裏須要先將自定義的Javascript寫入到WebBrowser.Document.Body中,而後使用InvokScript()方法執行函數。函數
這裏須要引用Microsoft.mshtml.dllgoogle
例子:url
public static class WebBrowserHelper { /// <summary> /// 建立一個Javascript標籤並附加到Document中 如<script type="text/javascript">function(){} </script> /// </summary> /// <param name="browser"></param> /// <param name="script"></param> /// <returns></returns> public static void CreateJSElement(WebBrowser browser, string script) { var tag = browser.Document.CreateElement("script"); var scriptElement = tag.DomElement as IHTMLScriptElement; scriptElement.type = "text/javascript";//設定爲Javascript scriptElement.text = script;//設置內容 browser.Document.Body.AppendChild(tag); } }
這裏咱們用一個方法 將自定義的JS Append到Document中,調用剛剛的方法spa
public void RunJS(WebBrowser browser) { string scriptStr="function sayHello(){ alert(\"Hello\");}";//咱們要執行的自定義函數 WebBrowserHelper.CreateJSElement(browser,scriptStr);//將這段函數附加到Document中 browser.Doucment.InvokeScript("sayHello");//執行sayHello()函數 }
四、獲取並處理Javascript函數的返回值
InvokeScript(string scriptName)方法會返回一個Object類型的返回值
若是這個值的類型是Javascript中的 String、Number類型,能夠直接調用Convert.ToString(),Convert.ToInt32() 進行轉換並取值使用
若是這個值得類型是Javascript中的 Object、Array 類型,則返回一個System.__ComObject類型的對象,目前爲止還沒找到如何取值的辦法,所以這裏我選擇提供一個自定義函數,將咱們要的返回值序列化爲JSON字符串再返回。
因爲WebBrowser不支持HTML5標準,沒法使用JSON.stringify()函數,這裏咱們須要引用其餘序列化JS對象的插件。
這裏推薦 Jquery-Json 在這裏下載
使用方式很簡單 $.toJSON(object);
整體上遇到並解決的問題就是這些了 具體的一些代碼 能夠 下載DEMO