【问题标题】:Communication between HTML in WebBrowser and windows phone appWebBrowser 中的 HTML 与 windows phone 应用程序之间的通信
【发布时间】:2014-08-12 10:28:06
【问题描述】:

我有一些静态 html 文件下载到独立存储中。我正在尝试使用 Windows Phone 应用程序中的 Web 浏览器控件打开这些文件。现在每个HTML文件都会通过javascript与后端代码通信,window.external.notify()不能申请所有的html页面。

所以我的问题是,

是否有任何 API 像(在 iOS 中)WebViewJavascriptBridgeGAJavaScript 或像(android)Javascript Interface 可用于 Windows Phone 8,它将与 WebBrowser 和 Windows Phone 应用程序中的 HTML 通信。 WinJS 是否也支持 Windows Phone 8?

【问题讨论】:

  • 您能否更准确地说明您的实际需求?是否要拦截 JavaScript 发出的所有 XHR 请求?

标签: c# javascript windows-phone-8 windows-phone webbrowser-control


【解决方案1】:

从 HTML 接收数据到手机:

您需要为 WebBrowser 的 ScriptNotify 事件添加事件处理程序。之后,每当您在 html 页面中调用 window.external.Notify(args) 时,ScriptNotify 都会触发,您将在 NotifyEventArgs 参数的 Value 属性中获得 args。

在javascript中:window.external.Notify(args);

在 CS 中:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    browser.ScriptNotify += browser_ScriptNotify;
}

private void browser_ScriptNotify(object sender, NotifyEventArgs e)
{
    var valueFromBrowser = e.Value;
}

用于将数据从手机传递到 HTML:

您需要使用 WebBrowser 的 InvokeScript() 方法。在那里,您需要在 javascript 中传递函数的名称并输入参数(如果有)。

在javascript中:function doSomething(args) { }

在 CS 中:browser.InvokeScript("doSomething", args);

希望对你有帮助。

【讨论】:

  • 感谢@Abhishek 的回复,但这改变了我的HTML 框架,对我来说不是一个可行的解决方案。你能建议我用其他方法来实现吗?
  • 你用的是什么框架?它是如何与外界沟通的?如果你使用window.external.Notify(),那就去吧
  • 实际上这个框架是为 SCORM (eLearning) 课程构建的。 SCORM:en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model
  • 您已经将 HTML 文件和框架作为本地文件提供。这意味着您可以操纵框架(在尽可能少的位置)以在需要时通知本机应用程序代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
相关资源
最近更新 更多