WinForm中WebBrowser的使用


       最近由於工作需要,研究了下Winform的WebBrowser控件,在這里給大家分享下。

 

       1、WebBrowser導航

            WebBrowser在進行導航的時候需要用到Navigate(string urlString)方法

       2、執行已有的JavaScript函數

            使用WebBrowser.Document.InovkeScript(string scriptName)

       3、執行自定義的Javascript函數

            這里需要先將自定義的Javascript寫入到WebBrowser.Document.Body中,然后使用InvokScript()方法執行函數。

            這里需要引用Microsoft.mshtml.dll

            例子:

    

 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);
        }
}
View Code

 

            這里我們用一個方法 將自定義的JS Append到Document中,調用剛剛的方法

public void RunJS(WebBrowser browser)
{
       string scriptStr="function sayHello(){ alert(\"Hello\");}";//我們要執行的自定義函數
       WebBrowserHelper.CreateJSElement(browser,scriptStr);//將這段函數附加到Document中

      browser.Doucment.InvokeScript("sayHello");//執行sayHello()函數

}
View Code

 

       4、獲取並處理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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM