c# webBrowser控制項與js的互動

來源:互聯網
上載者:User

知識:

[c-sharp]
view plaincopyprint?
  1. [System.Runtime.InteropServices.ComVisibleAttribute(true)] 
  2. 這是為了將該類設定為com可訪問 
  3.  
  4. Url屬性:WebBrowser控制項顯示的網頁路徑  
  5.  
  6. ObjectForScripting屬性:該對象可由顯示在WebBrowser控制項中的網頁所包含的指令碼代碼訪問 
  7. JavaScript通過window.external調用C#公開的方法。即由ObjectForScripting屬性設定的類的執行個體中所包含的公用方法。 
  8.  
  9.   
  10. // WebBrowser控制項顯示的網頁路徑 
  11. webBrowser1.Navigate(new Uri(System.Environment.CurrentDirectory + @"/XXX.html",
    UriKind.RelativeOrAbsolute)); 
  12. // 將當前類設定為可由指令碼訪問 
  13. webBrowser1.ObjectForScripting = this

[System.Runtime.InteropServices.ComVisibleAttribute(true)]<br />這是為了將該類設定為com可訪問</p><p>Url屬性:WebBrowser控制項顯示的網頁路徑 </p><p>ObjectForScripting屬性:該對象可由顯示在WebBrowser控制項中的網頁所包含的指令碼代碼訪問<br />JavaScript通過window.external調用C#公開的方法。即由ObjectForScripting屬性設定的類的執行個體中所包含的公用方法。</p><p>// WebBrowser控制項顯示的網頁路徑<br />webBrowser1.Navigate(new Uri(System.Environment.CurrentDirectory + @"/XXX.html", UriKind.RelativeOrAbsolute));<br />// 將當前類設定為可由指令碼訪問<br />webBrowser1.ObjectForScripting = this;<br />

.CS

[c-sharp]
view plaincopyprint?
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Data; 
  8. using System.Windows.Documents; 
  9. using System.Windows.Input; 
  10. using System.Windows.Media; 
  11. using System.Windows.Media.Imaging; 
  12. using System.Windows.Navigation; 
  13. using System.Windows.Shapes; 
  14. using System.Web; 
  15. using System.Security.Permissions; 
  16. namespace WpfApplication1 
  17.     /// <summary> 
  18.     /// Interaction logic for Window1.xaml 
  19.     /// </summary> 
  20.     public partial
    class Window1 : Window 
  21.     { 
  22.         public Window1() 
  23.         { 
  24.             InitializeComponent(); 
  25.             Basic ds = new Basic (); 
  26.             webBrowser1.Navigate(new Uri(System.Environment.CurrentDirectory + @"/aaa.html",
    UriKind.RelativeOrAbsolute));//擷取根目錄的日曆檔案 
  27.             webBrowser1.ObjectForScripting = ds;//該對象可由顯示在WebBrowser控制項中的網頁所包含的指令碼代碼訪問 
  28.         } 
  29.         private
    void Button_Click(object sender, RoutedEventArgs e) 
  30.         { 
  31.             textBox1.Text = DoSomething.name; 
  32.         } 
  33.  
  34.     } 
  35.     [System.Runtime.InteropServices.ComVisibleAttribute(true)]//將該類設定為com可訪問 
  36.     public
    class Basic 
  37.     { 
  38.         public
    static
    string name; 
  39.         public
    string Name 
  40.         { 
  41.             get {
    return name; } 
  42.             set { name = value; } 
  43.         } 
  44.         public
    void ClickEvent(string str) 
  45.         { 
  46.             this.Name = str; 
  47.         } 
  48.     } 

using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Windows;<br />using System.Windows.Controls;<br />using System.Windows.Data;<br />using System.Windows.Documents;<br />using System.Windows.Input;<br />using System.Windows.Media;<br />using System.Windows.Media.Imaging;<br />using System.Windows.Navigation;<br />using System.Windows.Shapes;<br />using System.Web;<br />using System.Security.Permissions;<br />namespace WpfApplication1<br />{<br /> /// <summary><br /> /// Interaction logic for Window1.xaml<br /> /// </summary><br /> public partial class Window1 : Window<br /> {<br /> public Window1()<br /> {<br /> InitializeComponent();<br /> Basic ds = new Basic ();<br /> webBrowser1.Navigate(new Uri(System.Environment.CurrentDirectory + @"/aaa.html", UriKind.RelativeOrAbsolute));//擷取根目錄的日曆檔案<br /> webBrowser1.ObjectForScripting = ds;//該對象可由顯示在WebBrowser控制項中的網頁所包含的指令碼代碼訪問<br /> }<br /> private void Button_Click(object sender, RoutedEventArgs e)<br /> {<br /> textBox1.Text = DoSomething.name;<br /> }</p><p> }<br /> [System.Runtime.InteropServices.ComVisibleAttribute(true)]//將該類設定為com可訪問<br /> public class Basic<br /> {<br /> public static string name;<br /> public string Name<br /> {<br /> get { return name; }<br /> set { name = value; }<br /> }<br /> public void ClickEvent(string str)<br /> {<br /> this.Name = str;<br /> }<br /> }<br />}<br />

HTML

[c-sharp]
view plaincopyprint?
  1. <HTML> 
  2. <head> 
  3. <mce:script language="JavaScript" type="text/javascript"><!-- 
  4. function Selec() 
  5. var divV=document.getElementById('div2').innerText; 
  6. window.external.ClickEvent(divV); 
  7. // --></mce:script> 
  8. </head> 
  9. <Body> 
  10. <Form> 
  11. <div id="div1" onClick="Selec();">000000000000</div> 
  12. <div id="div2">111111</div> 
  13. </Form> 
  14. </Body> 
  15. </HTML> 

<HTML><br /><head><br /><mce:script language="JavaScript" type="text/javascript"><!--<br />function Selec()<br />{<br />var divV=document.getElementById('div2').innerText;<br />window.external.ClickEvent(divV);<br />}<br />// --></mce:script><br /></head><br /><Body><br /><Form><br /><div id="div1" onClick="Selec();">000000000000</div><br /><div id="div2">111111</div><br /></Form><br /></Body><br /></HTML>

如果需要在運行時點擊按鈕後再將值傳入頁面顯示,則用下列方法傳值

this.webBrowser1.InvokeScript("js中的函數",“要傳的值”);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.