欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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"});