【问题标题】:NPAPI Plugin update doesnot work on the flyNPAPI 插件更新无法即时运行
【发布时间】:2013-08-13 05:29:08
【问题描述】:

我有使用 NPAPI Lib for Safari 和 firefox for Mac System 构建的浏览器插件。现在我有更新版本的插件,如果用户没有最新的插件,我要求用户下载新插件。

下载插件后它没有加载,我必须关闭浏览器并重新启动它。

我正在定期执行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;
                }
            }
        }
   }

【问题讨论】:

    标签: javascript plugins npapi firebreath browser-plugin


    【解决方案1】:

    下次请务必在文字中提及您的操作系统;我从标签中看到您使用的是 OS X,但它会更改 一切 以知道您使用的是 Mac。

    您需要以不同的文件名安装新版本(嗯,.plugin/ 包需要以不同的名称命名)。最简单的方法就是将插件的版本放在文件名中,例如~/Library/Internet\ Plug-Ins/MyPlugin_1.1.0.12.plugin

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

    【讨论】:

    • 但是在这个新旧插件都将在这个过程中。所以我们需要更改 webPluginName 和 WebPluginMIMETypes。请确认!
    • 只要改文件名就可以了;没有理由你需要更改 mimetypes 或任何东西(我从来不需要)
    • 但是 var version = remoteEngine.getAttributeByKey("plugin_version") 总是在这里给我旧版本。
    • 我面临的问题是旧插件保留在内存中,当我在插件中调用方法时,它会调用旧插件而不是新插件。
    • 您需要从 DOM 中删除旧的 object/embed 标记并释放对它的所有引用,以便对其进行垃圾收集,然后插入新的 object/embed 标记。在您释放它之前,它不会卸载。即使这样,您也无法保证浏览器何时将其卸载,但您对此无能为力。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多