c#和javascript函数相互调用示例分享
程序员文章站
2024-02-13 21:08:10
在设置过webbrowser控件的objectforscripting属性后,还需要设置应用程序对com可见,不然会抛出一个异常(objectforscripting 的类...
在设置过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("//www.jb51.net");
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"});