小编use*_*303的帖子

使用ObjectForScripting时的WPF浏览器控件window.external.invoke()throws对象不支持属性或方法

我正在尝试从WPF浏览器控制网页捕获点击事件.我创建了一个ObjectForScriptingHelper类:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public class ObjectForScriptingHelper
{
    public void Invoke()
    {
        MessageBox.Show("Hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

在托管Web浏览器控件的WPF窗口的构造函数中,我使用这个帮助器类作为ObjectForScripting:

public MainWindow()
{
    InitializeComponent();
    StandardWpfBrowser.ObjectForScripting = new ObjectForScriptingHelper();    
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个Uri变量ViewPageUri,我导航到:

StandardWpfBrowser.Navigate(ViewPageUri);
Run Code Online (Sandbox Code Playgroud)

然后在浏览器控件显示的页面中我引用了jquery,在html页面添加了一个按钮并添加了javascript:

$('button').click(function () {
    if (window.external === null)
        alert('ObjectForScripting is not set');
    else
    {
        alert('ObjectForScripting is set');
        window.external.Invoke();
    }
})
Run Code Online (Sandbox Code Playgroud)

else正在执行的分支,但错误信息object doesn't support property or method 'Invoke'被抛出.

所有教程和MSDN文档都遵循上述方法.我错过了什么吗?

c# wpf webbrowser-control

7
推荐指数
1
解决办法
1662
查看次数

标签 统计

c# ×1

webbrowser-control ×1

wpf ×1