生活随笔
收集整理的這篇文章主要介紹了
C#和JS交互 WebBrowser实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文實現了WebBrowser的簡單例子?? ?? 1.引用System.Windows.Froms.dll ? 2.引用WindowsFormsIntegration.dll ? 代碼如下: ?? public?partial?class?MainWindow?:?Window?? ????{?? ????????public?MainWindow()?? ????????{?? ????????????InitializeComponent();?? ????????}?? ?? ????????private?void?TextBlock_MouseDown(object?sender,?MouseButtonEventArgs?e)?? ????????{?? ????????????Window?_w?=?new?Window();?? ????????????web_control?web_c?=?new?web_control("http://www.baidu.com");?? ????????????_w.Content?=?web_c;?? ????????????_w.Owner?=?this;?? ????????????_w.Show();?? ????????}?? ????}?? ?? ????public?class?web_control?:?UserControl?? ????{?? ????????public?System.Windows.Forms.WebBrowser?_web_browser;?? ????????public?web_control(string?url)?? ????????{?? ????????????_web_browser?=?new?System.Windows.Forms.WebBrowser();?? ????????????_web_browser.ObjectForScripting?=?new?external_dispath(this);?????? ???????????var?host?=?new?System.Windows.Forms.Integration.WindowsFormsHost();?? ????????????host.Child?=?_web_browser;?? ????????????Content?=?host;?? ????????????Loaded?+=?(senser,?e)?=>?? ????????????????{?? ????????????????????_web_browser.Navigate(url);?? ????????????????};?? ????????}?? ????}?? ?? ?? 至此,上方實現了簡單的例子(除了紅色那一句之外)?? ?? =========================================17.7.21更新以下========================================================?? ?? ???但在后來遇到要與JS交互,在webBrowser使用過程中為了C#和JS通訊,webBrowser必須設置ObjectForScripting的屬性,?? 它是一個object,這個object可以提供給webBrowser控件載入的網頁上的script訪問。(上方紅色語句)?? ?? ????在設置過webBrowser控件的ObjectForScripting屬性后,還需要設置應用程序對com可見,不然會拋出一個異常 ? (ObjectForScripting?的類必須對?COM?可見。請確認該對象是公共的,或考慮向您的類添加?ComVisible?屬性。),可做如下設置:?? ?? ??[System.Runtime.InteropServices.ComVisibleAttribute(true)]???? ????public?class?external_dispath?? ????{?? ????????public?web_control?m_wbcontrol;?? ??????????? ????????public?external_dispath(web_control?wb_c)?? ????????{?? ????????????m_wbcontrol?=?wb_c;?? ????????}??? ?? ????????public?Object?createObject(String?name)?? ????????{?? ????????????return?new?external_dispath(m_wbcontrol);?? ????????}?? ?? ????????public?void?closeWebDlg()???????????? ????????{?? ????????????(m_wbcontrol.Parent?as?Window).Close();?? ????????}?? ????????通過在c#這一層實現external類,來達到在點擊網頁中右上角的關閉按鈕時,關閉網頁的彈窗?? ?}?? ?? JS代碼:?? ?? ??$(".close-btn").on("click",function(?? ?? e){????????????????? ?e.preventDefault();??????????????? ???TA.log({ld:'client',?id:'lhb_kx_gb'});???????????? ??????try{??????????????????? ???external.closeWebDlg();???????? ?? ???}catch?(e){}?});?? ?? 最后疑問是external是哪里來的,JS和C#是怎么約定的,以后在學習JS后可能會有深好理解
轉載于:https://www.cnblogs.com/kevinWu7/p/10163541.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生
總結
以上是生活随笔為你收集整理的C#和JS交互 WebBrowser实例的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。