2014-05-24 46 views
1

我有一个JavaScript/html/css网络“应用程序”,它利用D3可视化库来使用Bootstrap可视化文件系统,在台式机/笔记本电脑上。如何为D3js应用程序制作Windows 8和Android平板电脑的Web应用程序

我现在需要将此应用程序移动到平板电脑上,并且需要同时支持Windows 8和Android。但是我对这样做的最佳方式感到困惑。

D3是基于JavaScript的,所以我无法为每个支持的操作系统创建本机应用程序。我是否应该通过每个SDK将代码转换为移动Web应用程序或使用另一种方法(如Phonegap(或替代方法))来执行此操作?

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

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

回答

0

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

在Android中,您编写了一个javascript接口作为类,公共方法注释为@JavascriptInterface

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

您注册您的JavaScript接口上使用addJavascriptInterface方法的网页视图:

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

从JavaScript您可以访问使用上述方法的第二个参数提供的名称的接口的方法(MyInterface在这种情况下):

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

返回字符串(JSON)的方法与javascript很好地协同工作。
了解更多关于Android WebView and javascript interfaces

在Windows则可以使用实现类似的功能:

  • web视图(或浏览器的控制)的InvokeScript方法,其允许用户从C#的数据传递到的javascript
  • Notify方法(window.external.notify)它允许您将数据从JavaScript发送到C#并在控件上引发ScriptNotify事件。

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

不要忘了在你的网页视图启用JavaScript。

相关问题