2012-07-30 96 views
0

我正在爲嵌入式原生瀏覽器(Linux)開發NPAPI插件。我想要一個來自javascript的回調函數,它將調用我的插件中的回調函數。根據按鍵盤按鍵產生的事件。我必須不斷地將事件發送到瀏覽器窗口。我對這個需求幫助完全陌生。如何在NPAPI插件中實現回調函數

在此先感謝。

回答

2

如果您使用的是FireBreath,則documentation on firing events已經涵蓋此項。

如果你正在編寫一個簡單的NPAPI插件,插件應該實現addEventListener(type, listener, ...) & removeEventListener()
正如你已經知道如何添加腳本功能到你的插件,你只需要添加這兩個支持。

對於addEventListener()將得到以下參數:

  • type - 應該是標識事件的字符串
  • listener - 應該是一個對象,保留&店呢
  • useCapture - 應是布爾值,可選(如果不存在)假定false

要儲存你可以聽到的聽衆使用multimap<SomeStringType,NPObject*>成員,將事件字符串用作鍵,將偵聽器對象用作值。別忘了retain的聽衆。

觸發事件然後您得到equal_range(),並使用NPN_InvokeDefault()與偵聽器對象。

removeEventListener()接收相同的參數addEventListener(),你應該再erase()該事件的字符串指定的監聽器。不要忘記release偵聽器對象。

爲了兌現useCapture相應地擴展了上述內容。

+0

我正在使用普通NPAPI,請你舉例說明。如何添加事件偵聽器並激活所有存儲的偵聽器NPN_InvokeDefault()的默認方法。如有可能,請提供任何鏈接。提前致謝。 – 2012-07-31 02:22:32

+1

@r_tex,你讀過了嗎?[本教程提供了與JS的接口](http://colonelpanic.net/2009/08/building-a-firefox-plugin-part-three/)? – 2012-07-31 17:43:29

+0

謝謝,對於鏈接是的,我已經通過這個鏈接,並實現已經工作的插件,我可以從JavaScript調用插件方法。流程如下 - >創建一個從NPObject派生的類ScriptablePluginObjectBase,然後創建一個從ScriptablePluginObjectBase派生的類ScriptablePluginObject,內部ScriptablePluginObject的invoke方法我調用從JavaScript調用的方法。對不起,我是新手,可以告訴我如何編寫addEventListener,removeEventListener,並向每個列表中添加/刪除監聽參數(NP Object)。 – 2012-08-01 16:43:28