在带有参数的winforms web浏览器控件中从JS调用c#方法出错
本文关键字:JS 调用 出错 方法 控件 浏览器 参数 web winforms | 更新日期: 2023-09-27 18:01:51
我正在尝试从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方法块。
我一定是漏掉了什么。
愚蠢的错误。我正在评估函数不是未定义的,因为你通常会在从代码的其他部分调用函数之前。由于某种原因,这个求值是引发错误的地方,而不是调用本身(这实际上是可以的)。