C# winForm webBrowser頁面中js呼叫winForm類方法
阿新 • • 發佈:2019-01-01
有時我們在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 後臺方法了。原始碼點選開啟連結下載。