在带有参数的winforms web浏览器控件中从JS调用c#方法出错

Error calling C# method from JS in winforms webbrowser control with parameters

本文关键字:JS 调用 出错 方法 控件 浏览器 参数 web winforms      更新时间:2023-09-26

我正在尝试从web浏览器控件中打开的页面调用我的winform上的c#方法,如下所示:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting%28v=vs.110%29.aspx

在我的winform上我有这个方法:

    public void Test(String message)
    {
        MessageBox.Show(message, "client code");
    }

在我的网页上,我正在打电话:window.external.Test('called from script code');

当我试图调用这个,我得到一个javascript错误:"无效的过程调用或参数"

然而,当我修改我的表单的方法不带参数(如public void Test()),并相应地使javascript调用没有参数,它的工作没有任何问题。只有当我试图传递参数时(我需要这样做),我才会遇到这个问题。

更多信息:我有以下属性在我的表单类:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]

和我分配ObjectForScripting:

webBrowser1.ObjectForScripting = this;

调试时没有出现进入forms方法块。

我一定是漏掉了什么。

愚蠢的错误。我正在评估函数不是未定义的,因为你通常会在从代码的其他部分调用函数之前。由于某种原因,这个求值是引发错误的地方,而不是调用本身(这实际上是可以的)。