Firefox Tab Tearing杀死了我的NPPlugin

时间:2009-12-14 19:25:13

标签: firefox plugins

我有一个在Firefox中运行的NPAPI插件,但是只要该标签被“撕掉”(通过将标签拖动到空间以便形成新窗口),该插件就会被销毁并重新创建。问题是插件需要使用来自Ajax调用的信息进行初始化,我在Javascript中找不到任何方法来检测这个,因此插件没有获得必要的初始化信息。

那么,当标签被撕掉时,有关如何检测此事件和/或使插件不被破坏/重新创建的任何想法都会出现?

1 个答案:

答案 0 :(得分:0)

您正在处理哪种操作系统?如果它实际上是在破坏你的插件并重新创建它,你可以随时尝试在启动时调用javascript方法。

在param标签中指定函数的名称,然后在插件启动时,尝试通过在窗口NPObject上调用NPN_GetProperty来获取对该方法的引用(可以通过调用NPN_GetValue(NPNVWindowNPObject,& npobjectptr)获取并且然后调用NPN_GetProperty(npp,npobjectptr,NPN_GetStringIdentifier(functionname),& destObj)

然后你可以通过引用你的插件来调用那个方法(你可以用NPN_GetValue再次获取),js函数会知道是时候初始化你的插件了(再次?)。

您也可以做其他事情,例如在全局空间中存储初始化数据,并尝试找出一种方法来检测它应该是相同的插件实例...不确定如何确定它应该是但同样的。