我正在开发一个仅使用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有大小限制的解决方案。
如果有人有解决方案......
答案 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");
}
}