WPF WebBrowser - 在JavaScript中调用方法

时间:2014-04-13 19:13:34

标签: javascript wpf communication

我正在开发一个仅使用WebBrowser的WPF应用程序,该WebBrowser使用JavasCript启动HTML页面。我也有一些C#方法。

我正在寻找一种在JavaScript中启动我的C#方法的好方法,包括参数和可能的回调。

现在,我有JavaScript方法导航到特殊网址,例如" myApp:// mymethod?param1 = value& param2 = value"并且在"导航" webBrowser的事件,我检查URL并使用参数调用我需要的方法。

此解决方案有效但URL的大小有限。如何发送更重的数据? (自定义标题数据,POST,Cookie,本地存储或我不知道的任何其他内容...... :))

我无法使用window.external,因为最后我将使用Xamarin来创建跨平台应用。 Web浏览器将用于Windows,但IOS使用UIWebView,它不支持window.external(stevesaxon.me / post/2011 / ...),所以我需要一个适用于所有地方且自定义URL有大小限制的解决方案。

如果有人有解决方案......

1 个答案:

答案 0 :(得分:1)

请查看How to: Implement Two-Way Communication Between DHTML Code and Client Application Code

基本上你需要在脚本代码中使用window.external对象来访问公共属性和方法

HTML代码:

<button onclick="window.external.Test('called from script code')">
    call client code from script code
</button>

WPF代码中的C#代码:

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

WPF和JavaScript之间的通信需要完全信任,因此您需要添加以下代码:

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public class MainWindow
{
        public void Test(String message)
    {
        MessageBox.Show(message, "client code");
    }
}