我有一個在Firefox中運行的NPAPI插件,但任何時候標籤被「撕掉」(通過將標籤拖入空格以形成一個新窗口),插件被銷燬並且重建。問題在於插件需要使用來自Ajax調用的信息進行初始化,並且我無法在Javascript中找到任何方式來檢測此問題,因此該插件沒有獲取必要的初始化信息。Firefox標籤撕裂殺死我的NPPlugin
因此,關於如何檢測此事件和/或使該插件在拆除標籤時不會被銷燬/重新創建?
我有一個在Firefox中運行的NPAPI插件,但任何時候標籤被「撕掉」(通過將標籤拖入空格以形成一個新窗口),插件被銷燬並且重建。問題在於插件需要使用來自Ajax調用的信息進行初始化,並且我無法在Javascript中找到任何方式來檢測此問題,因此該插件沒有獲取必要的初始化信息。Firefox標籤撕裂殺死我的NPPlugin
因此,關於如何檢測此事件和/或使該插件在拆除標籤時不會被銷燬/重新創建?
你正在處理什麼操作系統?如果它實際上是在銷燬插件並重新創建插件,那麼您可以始終讓插件在啓動時嘗試調用JavaScript方法。
指定param標記的函數的名稱,然後在插件啓動,嘗試通過調用NPN_GetProperty窗口NPObject(您可以通過調用NPN_GetValue(NPNVWindowNPObject,& npobjectptr坐上去該方法的引用)和然後調用NPN_GetProperty(NPP,npobjectptr,NPN_GetStringIdentifier(functionname),& destObj)
然後你就可以調用該方法與你的插件的引用(你可以用NPN_GetValue再次獲得)和js函數就知道是時候初始化你的插件(再次?)。
你也可以做其他的事情,s例如在全局空間中存儲初始化數據,並試圖找出一種方法來檢測它應該是同一個插件實例...不知道如何確定它應該是同一個插件實例。
操作系統是Windows(即將推出Mac支持,接下來Linux支持)。我喜歡初始化方法;我會試一試。 – 2009-12-28 22:48:19
你的意思是基於「NPAPI」的插件嗎? – jldupont 2009-12-14 19:27:28
是的,我做到了。謝謝。 – 2009-12-14 21:34:49