2012-09-09 79 views
0

我用firebreath框架編寫了一個NPAPI插件。我能夠從Javascript傳遞簡單的數值並在我的(C++)插件中訪問它們,執行操作並返回結果。我想知道如何操作矢量,即陣列。我不想在插件中分配新數組,並從JavaScript複製數組(儘管我不知道如何去做)。我如何直接訪問我的插件中的JavaScript數組?有沒有特殊的方法來做到這一點?在C++/Plugin中訪問Javascript數組?

回答

1

Firebreath website

JavaScript對象可以與FB :: JSObjectPtr類型使用。你可能想使用JavaScript對象的示例包括:

  1. JavaScript對象(用方法和/或值的成員)
  2. JavaScript數組(即打算修改;否則,可以使用容器型)
  3. Javascript方法回調

數組是對象;這些價值觀在getProperty(n)或的getProperty( 「長度」)等

您還可以使用類似的方法 - >調用( 「推」,FB :: variant_list_of(VAL))等

(在JSAPI方法以使用JSObjectPtr類型,你應該使用,看起來像:)

void doSomethingWithAnArray(const FB::JSObjectPtr& array) { ... } 

還記得FireBreath說不出是什麼類型的JS對象是什麼,只要有一個JS對象的方法;你將不得不爲你自己的錯誤檢測,而不是給你一個實際的數組,而是一些其他的對象。

+0

非常感謝很多出差者。我甚至考慮使用js-ctypes(顯然更簡單)。我知道js-ctypes是mozilla特有的,並用於擴展。你是否看到有什麼不同,即哪一種比另一種好?對於是擴展還是插件,我沒有任何嚴格的要求。我只需要能夠訪問本地庫。 – lucent

+1

作爲一般的經驗法則,如果插件以外的其他內容可以完成某項工作,那就這樣做。除非您的應用程序沒有其他可行的選項,否則不應該使用插件。也就是說,我從來沒有用過js-ctypes;我不做延期。主要的缺點是他們會鎖定您的特定瀏覽器,除非您編寫多個版本。 – taxilian

+0

謝謝。說得好。我明白了.. – lucent