我正在爲嵌入式原生瀏覽器(Linux)開發NPAPI插件。我想要一個來自javascript的回調函數,它將調用我的插件中的回調函數。根據按鍵盤按鍵產生的事件。我必須不斷地將事件發送到瀏覽器窗口。我對這個需求幫助完全陌生。如何在NPAPI插件中實現回調函數
在此先感謝。
我正在爲嵌入式原生瀏覽器(Linux)開發NPAPI插件。我想要一個來自javascript的回調函數,它將調用我的插件中的回調函數。根據按鍵盤按鍵產生的事件。我必須不斷地將事件發送到瀏覽器窗口。我對這個需求幫助完全陌生。如何在NPAPI插件中實現回調函數
在此先感謝。
如果您使用的是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
相應地擴展了上述內容。
我正在使用普通NPAPI,請你舉例說明。如何添加事件偵聽器並激活所有存儲的偵聽器NPN_InvokeDefault()的默認方法。如有可能,請提供任何鏈接。提前致謝。 – 2012-07-31 02:22:32
@r_tex,你讀過了嗎?[本教程提供了與JS的接口](http://colonelpanic.net/2009/08/building-a-firefox-plugin-part-three/)? – 2012-07-31 17:43:29
謝謝,對於鏈接是的,我已經通過這個鏈接,並實現已經工作的插件,我可以從JavaScript調用插件方法。流程如下 - >創建一個從NPObject派生的類ScriptablePluginObjectBase,然後創建一個從ScriptablePluginObjectBase派生的類ScriptablePluginObject,內部ScriptablePluginObject的invoke方法我調用從JavaScript調用的方法。對不起,我是新手,可以告訴我如何編寫addEventListener,removeEventListener,並向每個列表中添加/刪除監聽參數(NP Object)。 – 2012-08-01 16:43:28