我正在尝试从WPF浏览器控制网页捕获点击事件。我创建了一个ObjectForScriptingHelper类:
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public class ObjectForScriptingHelper
{
public void Invoke()
{
MessageBox.Show("Hello");
}
}
在托管Web浏览器控件的WPF窗口的构造函数中,我使用这个帮助器类作为ObjectForScripting:
public MainWindow()
{
InitializeComponent();
StandardWpfBrowser.ObjectForScripting = new ObjectForScriptingHelper();
}
然后我有一个Uri变量ViewPageUri
,我导航到:
StandardWpfBrowser.Navigate(ViewPageUri);
然后在浏览器控件显示的页面中我引用了jquery,在html页面添加了一个按钮并添加了javascript:
$('button').click(function () {
if (window.external === null)
alert('ObjectForScripting is not set');
else
{
alert('ObjectForScripting is set');
window.external.Invoke();
}
})
正在执行else
分支,但抛出错误消息object doesn't support property or method 'Invoke'
。
所有教程和MSDN文档都遵循上述方法。我错过了什么吗?
答案 0 :(得分:2)
如果其他人有同样的问题。事实证明,命名方法Invoke
是个问题。一旦我更改了方法名称,它就会按预期工作。