【轉】分享:c#和javascript函數的相互調用(ObjectForScripting 的類必須對 COM 可見。請確認該對象是公共的,或考慮向您的類添加 ComVisible 屬性。)

  在webBrowser使用過程當中爲了C#和JS通信,webBrowser必須設置ObjectForScripting的屬性,它是一個object,這個object能夠提供給webBrowser控件載入的網頁上的script訪問。javascript

    在設置過webBrowser控件的ObjectForScripting屬性後,還須要設置應用程序對com可見,否則會拋出一個異常 (ObjectForScripting 的類必須對 COM 可見。請確認該對象是公共的,或考慮向您的類添加 ComVisible 屬性。),可作以下設置:java

[System.Runtime.InteropServices.ComVisible(true)]web

例如:c#

複製代碼
[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方法便可。ide

該方法簽名以下:this

InvokeScript(String spriteName,object[] args);spa

例如:code

複製代碼
<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"});
複製代碼

http://www.lwolf.cn/blog/article/code/WebBrowser-js-call-csharp.htmorm

http://blog.udnz.com/Article/Invoke_Members_Of_Winform_On_Webbrowser.aspxhtm

相關文章
相關標籤/搜索