使用navigator.plugins确定Java版本

时间:2014-12-05 23:28:39

标签: java javascript version

以下javascript代码将通知所有浏览器启用的插件(是的,我知道它在IE上不起作用,但对于IE,总是有deployJava):

if ((navigator.plugins) && (navigator.plugins.length)) {

  for (var bb = 0, l = navigator.plugins.length; bb < l; bb++) {

    var vv = navigator.plugins[bb].name + "<br>"; 

    document.write(vv);

  }

}

我安装了Java 6.22,因此写入页面的相关行是这样的:
Java(TM)Platform SE 6 U22

我的问题是:我如何补充上述代码,以便返回我(或任何人)浏览器中的主要版本(6)和更新(22)?

我认为最好的方法是使用正则表达式,但我对它不好。

1 个答案:

答案 0 :(得分:0)

我认为最简单的(阅读:最黑客)解决方案是这样的:

var plugin_name = navigator.plugins[bb].name
if (plugin_name.toLowerCase().indexOf("java") != -1) {
    var parts = plugin_name.split(" ").reverse();
    // if the plugin has an update
    if(plugin_name.match(/U[0-9]+/)) {
        // grab the end of the plugin name and remove non numeric chars
        var update = parts[0].replace(/[^0-9]/, "");
        // grab the major version and remove non numeric chars
        var major = parts[1].replace(/[^0-9]/, "");
        // print the major number and update number
        console.log(major);
        console.log(update);
    } else {
        var update = "0";
        // grab the major version and remove non numeric chars
        var major = parts[0].replace(/[^0-9]/, "");
        // print the major number and update number
        console.log(major);
        console.log(update);
    }  
}

然后,您可以通过插件将此代码放入循环中,并使用适当的逻辑替换console.log给定主要和更新编号。