在Chrome浏览器中检测插件的版本

时间:2011-02-03 20:38:24

标签: javascript google-chrome npapi

我有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代码中添加自己的属性,但在将插件嵌入页面之前,我没有看到可以使用它的方式。

有没有解决方法?

先谢谢,安德鲁

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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