如何为D3js应用程序制作适用于Windows 8和Android平板电脑的Web应用程序

时间:2014-05-24 21:14:42

标签: javascript android cordova windows-8 d3.js

我有一个javascript / html / css web“应用程序”,它利用D3可视化库来使用Bootstrap可视化文件系统,这在桌面/笔记本电脑上运行良好。

我现在需要将此应用程序移动到平板电脑,并且需要同时支持Windows 8和Android。但我真的很困惑最好的方法来做到这一点。

D3是基于javascript的,所以我不能为每个支持的操作系统制作本机应用程序。我应该通过每个SDK将代码转换为移动网络应用程序,还是使用其他方法(如Phonegap(或替代方案))来执行此操作?

如果我使用SDK,那么我需要处理不同版本的代码来更新任何更改,但我不确定Phonegap是否正在寻找,因为它似乎很难开始使用它。我只需要支持Windows 8和Android - 有更简单的方法吗?

最后,如果我使用Phonegap创建应用,我是否可以访问位于云中的数据库,或者这是不可能的?

1 个答案:

答案 0 :(得分:0)

你真的不需要Phonegap。您可以构建仅包含填充整个屏幕的WebView的本机应用程序。 WebView将托管您的“Web应用程序”。 然后,(这是有趣的部分)你编写接口以访问本机对象。

在Android中,您将javascript界面​​编写为一个带有@JavascriptInterface注释的公共方法的类。

class MyJsInterface{
  @JavascriptInterface
  public String doStuff() { return "hello" ; }
}

您可以使用addJavascriptInterface方法在网络视图中注册javascript界面​​:

webView.addJavascriptInterface(new MyJsInterface(), "MyInterface");

您可以使用提供的名称作为上述方法的第二个参数(在本例中为MyInterface)从javascript访问您的界面的方法:

var message = window.MyInterface.doStuff();
// message is 'hello'

返回字符串(JSON)的方法可以很好地与javascript一起使用。
详细了解Android WebView and javascript interfaces

使用Windows,您可以使用以下方法实现类似功能:

  • WebView(或浏览器控件)的InvokeScript方法,允许您将数据从C#传递到javascript
  • 通知方法(window.external.notify),它允许您将数据从javascript发送到C#并在控件上引发ScriptNotify事件。

好文章:Windows Phone 8 native and Javascript interop
MSDN链接:WebBrowser.ScriptNotify Event

不要忘记在网络视图上启用javascript。