在webBrowser使用過程中為了C#和JS通訊,webBrowser必須設定ObjectForScripting的屬性,它是一個object,這個object可以提供給webBrowser控制項載入的網頁上的script訪問。
在設定過webBrowser控制項的ObjectForScripting屬性後,還需要設定應用程式對com可見,不然會拋出一個異常(ObjectForScripting 的類必須對 COM 可見。請確認該對象是公用的,或考慮向您的類添加 ComVisible 屬性。),可做如下設定:
[System.Runtime.InteropServices.ComVisible(true)]
例如:
[ComVisible(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
webBrowser1.ObjectForScripting = this;
webBrowser1.Navigate("http://www.cnblogs.com/winzheng");
base.OnLoad(e);
}
}
如果要和JS通訊,使用webBrowser的Document對象的InvokeScript方法即可。
該方法簽名如下:
InvokeScript(String spriteName,object[] args);
例如:
- <scripttype="text/javascript"> //提供給c#調用的方法
- function test(n,s)
- {
- alert(n+"/"+s);
- } //調用C#的方法
- function callCSharp(){ //這裡可以看到window.external被設定成了什麼
- alert(window.external);
- window.external.Test("hello",15);
- } </script>
- <button onclick="callCSharp()">call c#</button>
調用:web.Document.InvokeScript("test", new Object[] {1,"hello"});
態度決定一切,技術改變生活
作者:winzheng
出處:http://cnblogs.com/winzheng
本文為原創作品,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利。