1. 程式人生 > >C# winForm webBrowser頁面中js呼叫winForm類方法

C# winForm webBrowser頁面中js呼叫winForm類方法

有時我們在winform專案中嵌入了網頁,想通過html頁面呼叫後臺方法,如何實現呢?其實很簡單,主要有三部:

1、在被呼叫方法類上加上[ComVisible(true)]標籤,意思就是當前類可以com元件的形式供外包呼叫

2、在webBrowser控制元件中設定可被html頁面呼叫的類即:webBrowser1.ObjectForScripting = this;前端即可通過window.external訪問this物件

3、html頁面呼叫後臺方法:window.external.方法名(); 此處的window.external相當於webBrowser1.ObjectForScripting

一、後臺程式碼:

namespace jsInWebBrowserCallCSharpMethod
{
    [ComVisible(true)] //1、必須設定且為true,否則設定webBrowser1.ObjectForScripting物件時會報錯
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.Url = new Uri(Application.StartupPath + "\\htmls\\test.html");
            webBrowser1.ObjectForScripting = this;//2、設定js中window.external物件代表的類
        }
        /// <summary>
        /// 供webBrowser頁面中js呼叫的方法
        /// </summary>
        /// <param name="mess"></param>
        public void ShowMessage(string mess)
        {
            MessageBox.Show(mess);
        }

    }
}

二、前端test.html程式碼:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>測試呼叫winform後臺方法頁面</title>
    
    <script type="text/javascript">
        
       window.onload=function(){

var btn=document.getElementById('btnCallCSharpMethod');
btn.onclick=function(){

window.external.ShowMessage('成功呼叫winform類中的方法!');//3、此處window.external相當於winform中設定的webBrowser.ObjectForScripting物件

}

}
    </script>

</head>
<body style='text-align:center;'>
   <input type='button' id='btnCallCSharpMethod' value='呼叫winform類中的方法' />
</body>
</html>


按照上面1,2,3點操作,就能實現html頁面呼叫winform 後臺方法了。原始碼點選開啟連結下載。