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

Javascript 在Chrome浏览器中检测插件的版本,javascript,google-chrome,npapi,Javascript,Google Chrome,Npapi,我有NPAPI插件,我想在将其嵌入网页之前检测其版本。如果版本不是最新的,我想显示一些消息,要求用户更新插件 现在,它以以下方式实现 if (navigator.mimeTypes && navigator.mimeTypes["application/myplugin"]) { { // some code here if(navigator.plugins["myplugin"] && navigator.plugins["myplugin"

我有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
}
if(navigator.mimeTypes&&navigator.mimeTypes[“应用程序/myplugin”]){
{
//这里有一些代码
if(navigator.plugins[“myplugin”]&&navigator.plugins[“myplugin”].version>=最新版本){
//我们有最新版本(将插件嵌入网页)
文件编号:“”;
}否则{
document.write(“在此处显示消息”);
}
//一些代码
}
问题是
navigator.plugins[“myplugin”].version
在Firefox中运行良好,但在Chrome中不起作用。Chrome不公开
version
属性。我可以在NPAPI代码中添加我自己的属性,但在将插件嵌入页面之前,我看不到如何使用它

有什么解决办法吗


提前感谢,Andrew

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

我实际上将版本号放在了文件名中,而不是名称或描述中。原因是如果有多个插件具有t相同的名称、描述和mimetypes Firefox通常会使用最新版本。Firefox的旧版本在处理这一点上不一致,因此我甚至通常将np???U version.dll文件放在特定版本的子目录中


这有点麻烦,但在每个NPAPI浏览器中都是一样的。

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

是的,我考虑过在描述中添加版本号,比如在Silverlight中。但我想找到更优雅的方式:-)无论如何,谢谢你的建议。恐怕这是你最好的选择。我相信这是一个webkit问题,因为Safari也做同样的事情。是的,看起来我需要在描述中设置插件版本。谢谢你的帮助。谢谢你的建议,但系统中应该只有一个版本的插件,我不想为每个版本更改插件名称,创建某种插件“地狱”。这就是重点;你不需要更改插件名称,只需要更改文件名。当然,你只需要在系统中选择一个版本的插件……但是升级时,很容易让浏览器打开一个插件,然后你就无法删除它。