【发布时间】:2014-04-13 19:13:34
【问题描述】:
我正在开发一个 WPF 应用程序,它只有一个 WebBrowser,它使用 JavasCript 启动一个 HTML 页面。我也有一些 C# 方法。
我正在寻找一种在 JavaScript 中启动我的 C# 方法的好方法,带有参数和可能的回调。
现在,我有一些 JavaScript 方法可以导航到“myApp://mymethod?param1=value¶m2=value”之类的特殊 URL,并且在 webBrowser 的“导航”事件中,我检查了 URL 并调用了我需要带参数。
此解决方案有效,但 URL 的大小受到限制。如何发送更重的数据? (自定义标头数据、POST、cookie、本地存储或其他我不知道的东西...... :))
我不能使用 window.external,因为最后我会使用 Xamarin 来做一个跨平台的应用程序。 WebBrowser 将适用于 Windows,但 IOS 使用不支持 window.external (stevesaxon.me/posts/2011/...) 的 UIWebView,因此我需要一个适用于任何地方的解决方案,并且自定义 URL 有大小限制。
如果有人有解决方案...
【问题讨论】:
-
我没用过,但你可以在 WebBrowser 对象上查找 ObjectForScripting 属性。
-
谢谢,但我忘了说它最后应该是多平台的(我将使用 Xamarin 用于 IOS 和 android)。我将在 Windows 上拥有一个“WebBrowser”,在 android 上拥有一个“WebView”,......所以我正在寻找一种可以在任何地方都可以使用的解决方案......
-
好吧,我只看到 2 种可能性(但肯定还有更多)。使用电话间隙进行开发或使用 websockets。 C# 中有一些 WebSocket 实现。您将能够以 json 格式交换数据。这里有一篇关于 Websockets 和 C# 的文章divyen.wordpress.com/2012/06/13/…
-
您可以在您的代码中构建一个低端 HTTP 服务器并将其托管在本地端口上。正如 Didier 建议的那样,您可以使用 JSON 来促进客户端/服务器数据传输。
-
再次感谢您的回答。其实我并不想用PhoneGap,只是实现了PhoneGap原理的一个简单版。我会检查 Websockets
标签: javascript wpf communication