2013-04-02 156 views
2

我有一个将在嵌入式平台上运行的JavaScript应用程序。它必须调用一些已经在平台上实现的c API。这是一个专有应用程序,只能在选定的设备上运行。
我在webkit上运行这个应用程序。没有可用的JVM。
我想到了一些选择,并得到了一些。我想知道他们中的任何一个是否适用或更好的选择。我是JavaScript新手,所以我的想法可能不对。从javascript访问本地c函数

  1. 类似的东西,以JNI(如果存在的话)

  2. 制定webkit的一个插件,它暴露了一些的JavaScript API的应用程序,然后调用原生的C函数

  3. 修改的webkit

回答

3

你的第二个建议非常接近你需要做的。当你编译浏览器时(你不需要自己编译webkit),你可以注册函数和对象。

如果你使用Qt,你应该开始here

如果你使用GTK,注册是不同的,here是一个很好的例子。

+0

不会使用QT方法限制平台(我了解chrome不支持QT)。像NPAPI会是更好的选择吗? – jogabonito

+0

@jogabonito - QT是一个[跨平台](http://en.wikipedia.org/wiki/Qt_%28framework%29#Platforms)框架。事实上,铬没有使用它不会改变它。正如我的回答中所提到的,我所提供的解决方案仅在您构建浏览器时才有意义。 – MByD

0

您可能想要探索的一种方法是脚本警报处理程序。我知道webkit gtk支持它http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-webkitwebview.html#WebKitWebView-script-alert

你可以在你的webview和parse参数上有简单的javascript警报,然后调用所需的函数。当然,如果你有复杂的参数(例如对象),这些参数不能很容易地转换为字符串,这种方法将很难实现。

唯一的问题是我不知道您的平台是否支持此功能,因为您没有提及该平台,所以我无法检查。