2013-04-02 207 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警報,然後調用所需的函數。當然,如果你有複雜的參數(例如對象),這些參數不能很容易地轉換爲字符串,這種方法將很難實現。

唯一的問題是我不知道您的平臺是否支持此功能,因爲您沒有提及該平臺,所以我無法檢查。