我正在寫一個網絡瀏覽器插件(NPAPI)JavaScript事件生成異步從瀏覽器插件(NPAPI)
我的插件啓動一個工作線程,並作爲工人的進展,我想傳回的事件到Javascript。但是由於NPAPI線程模型,工作線程直接調用回NPAPI是不合法的,因此工作線程無法調用Javascript。
對此的一個解決方案是NPN_PluginThreadAsyncCall函數。但這是一個相對較新的功能。例如,它僅支持Firefox 3。
有什麼辦法可以從NPAPI插件獲取異步事件傳遞/ JavaScript執行而不使用NPN_PluginThreadAsyncCall?人們在添加此功能之前做了什麼?
謝謝!知道平臺GUI事件循環線程對於NPAPI調用是安全的是非常有用的。我一定會檢查Firebreath。 在Mac上,FWIW,如果你可以依靠Cocoa,在GUI線程上運行代碼的簡單方法是NSObject方法performSelectorOnMainThread。 – Geoff 2009-12-23 09:59:12
是的,我想有人告訴我有關performSelectorOnMainThread的問題,但到目前爲止我還沒有必要使用它。目前仍然使用Firefox 2的用戶比例非常小,所以我決定不再支持它。藉助FireBreath,如果有人需要它足夠嚴格(或者他們可以),我們可以添加支持,但我不需要它來支持我的任何東西。 =]有幾個非常好的功能,直到firefox 2才實現;例如,NPN_Enumerate和NPN_Construct。此外,firefox 2有一個已知的bug,它無法看到在Windows中HKCU註冊的插件,所以你必須是管理員。 – taxilian 2009-12-24 17:53:14