1

我有 NPAPI 插件,我想在将其嵌入网页之前检测它的版本。如果版本不是最新版本,我想显示一些要求用户更新插件的消息。

现在它通过以下方式实现

if (navigator.mimeTypes && navigator.mimeTypes["application/myplugin"]) {
{
    // some code here

    if(navigator.plugins["myplugin"] && navigator.plugins["myplugin"].version >= latest_version) {
        // we have the latest version (embed the plugin into web page)
        document.write ("<object id='plugin'><embed ....></object>");
    } else {
        document.write ("Show message here");
    }

    // some code
}

问题是它navigator.plugins["myplugin"].version在 Firefox 中运行良好,但在 Chrome 中却不行。Chrome 不公开version属性。我可以在 NPAPI 代码中添加我自己的属性,但在将插件嵌入页面之前我看不到我可以使用它的方式。

有什么解决方法吗?

在此先感谢,安德鲁

4

3 回答 3

1

我看到很多插件在名称或描述中都有版本信息。您应该能够在嵌入之前访问该信息。

于 2011-02-03T20:58:02.920 回答
1

我实际上将版本号放在文件名中,而不是名称或描述中。这样做的原因是,如果有多个具有相同名称、描述和 mimetypes 的插件,Firefox 通常会使用最新版本。旧版本的 firefox 在处理这个问题上一直不一致,所以我什至通常将 np???_version.dll 文件放在特定于版本的子目录中。

这有点痛苦,但它在每个 NPAPI 浏览器中始终以相同的方式工作。

于 2011-02-03T21:13:41.120 回答
0

您可以创建包含版本的插件的 JSAPI 属性。当从 javascript 调用时,此属性返回插件的版本。因此,当您尝试在页面中插入/嵌入插件时,您可以通过 javascript 检查以进行适当的调用。

于 2013-06-03T14:05:44.293 回答