检查浏览器中的JRE版本

时间:2010-05-03 20:37:25

标签: javascript browser java

基本上,我想找出在网页上检查用户JRE版本的最佳方法。我有一个JNLP文件的链接,如果用户的JRE版本是1.6或更高,我只想显示它。我一直在使用deployJava JavaScript代码(http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html),并且已经让它在除了Safari之外的所有浏览器中工作(通过使用deployJava.versionCheck)。无论出于何种原因,Safari都没有提供最新的JRE版本号 - 我通过显示getJREs()函数的值来找到它。我安装了1.6.0_20,它显示在其他所有浏览器中,但Safari一直说当前只安装了1.5.0。

我也尝试使用createWebStartLaunchButtonEx()函数并指定'1.6.0'作为最低版本,但是当我单击按钮时没有任何反应(在任何浏览器中)。

有什么建议吗?

仅供参考:这是我的代码 -

if (deployJava.versionCheck('1.6+')) {
    var dir = location.href.substring(0,location.href.lastIndexOf('/')+1);
    var url = dir + "tmaj.jnlp";
    deployJava.createWebStartLaunchButton(url, '1.6.0');
} else {
    var noticeText = document.createTextNode("In order to use TMAJ, you must visit the following link to download the latest version of Java:");
    document.getElementById('jreNotice').appendChild(noticeText);

    var link = document.createElement('a');
    link.setAttribute('href', 'http://www.java.com/en/download/index.jsp');
    var linkText = document.createTextNode("Download Latest Version of Java");
    link.appendChild(linkText);
    document.getElementById('jreDownloadLink').appendChild(link);
}

2 个答案:

答案 0 :(得分:1)

最好的办法是检查navigator.plugins阵列。

以下是适用于Chrome / Firefox的快速示例。据我所知,Internet Explorer不提供对插件阵列的访问。

function getJavaVersion() {
    var j, matches;
    for (j = 0;j < navigator.plugins.length;j += 1) {
        matches = navigator.plugins[j].description.match(/Java [^\d]+(\d+\.?\d*\.?\d*_?\d*)/i);
        if (matches !== null) {
            return matches[1];
        }
    }
    return null;
};

console.log(getJavaVersion()); // => 1.6.0_16

答案 1 :(得分:1)

不确定它是否对您有所帮助,但您可以将最小jre版本指定为jnlp文件中的子句。如果不满足要求,Webstart将不会启动您的应用程序。

查看标签。

另外,看看

How to check JRE version prior to launch?