Javascript NPAPI插件更新无法实时运行

Javascript NPAPI插件更新无法实时运行,javascript,plugins,npapi,firebreath,browser-plugin,Javascript,Plugins,Npapi,Firebreath,Browser Plugin,我有使用NPAPI库为Safari和firefox为Mac系统构建的浏览器插件。现在我有了更新版本的插件,如果用户没有最新的插件,我会要求用户下载新插件 下载插件后,它不会被加载,我必须关闭浏览器并重新启动它 我正在定期执行navigator.plugin.refresh(false),但没有成功。我现在无法重新加载页面,因为我仍在使用旧的插件版本 如果在活动监视器中关闭插件并重新启动浏览器,则会显示新的插件版本。 请帮我做这个 编辑: 此方法每3秒调用一次 function InitIEPlu

我有使用NPAPI库为Safari和firefox为Mac系统构建的浏览器插件。现在我有了更新版本的插件,如果用户没有最新的插件,我会要求用户下载新插件

下载插件后,它不会被加载,我必须关闭浏览器并重新启动它

我正在定期执行
navigator.plugin.refresh(false)
,但没有成功。我现在无法重新加载页面,因为我仍在使用旧的插件版本

如果在活动监视器中关闭插件并重新启动浏览器,则会显示新的插件版本。 请帮我做这个

编辑:

此方法每3秒调用一次

function InitIEPlugin() {
plugin = navigator.plugins["MyPlug-In"];
        if (plugin) {
            remoteEngine = document.getElementById('MyPlugin');
            if (remoteEngine) {
                isMyPluginInstalled = true;
                var version = remoteEngine.getAttributeByKey("plugin_version");
                if ((ua.indexOf('Intel Mac OS X 10.5') >= 0) || (ua.indexOf('Intel Mac OS X 10_5') >= 0)) {
                    //isHarmonyPluginUpgradeRequired = CheckVersionOfPlugin(version);
                }
                else {
                    isMyPluginUpgradeRequired = CheckVersionOfMacPlugin(version);
                    if (isMyPluginUpgradeRequired == true)
                        isMyPluginInstalled = false;
                }
            }
        }
   }

下次一定要在文章中提到你的操作系统;我从你的标签上看到你在OSX上,但它改变了一切,让你知道你在Mac上

您需要以不同的文件名安装新版本(嗯,.plugin/bundle需要以不同的名称命名)。最简单的方法是将插件的版本放在文件名中,例如~/Library/Internet\plugins/MyPlugin\u 1.1.0.12.plugin


只要新插件的文件名与旧插件的文件名不同,它就应该可以工作。

但在这个过程中,旧插件和新插件都将处于工作状态。因此,我们还需要更改webPluginName和WebPluginMIMETypes。请确认!只要你改变文件名,你就应该很好;没有理由需要更改mimetype或任何东西(我从来没有这样做过),但是var version=remoteEngine.getAttributeByKey(“插件版本”)总是在这里给我旧版本。我面临的问题是旧插件仍然存在于内存中,当我在插件中调用方法时,它将调用旧插件而不是新插件。你需要从DOM中删除旧对象/嵌入标记,并释放对它的任何引用,以便对其进行垃圾收集,然后插入新对象/嵌入标记。在您释放它之前,它不会卸载。即使这样,您也无法保证浏览器何时卸载它,但对此您无能为力。