Javascript 在浏览器中检查JRE版本

Javascript 在浏览器中检查JRE版本,javascript,browser,java,Javascript,Browser,Java,基本上,我想找出在网页上检查用户JRE版本的最佳方法。我有一个指向JNLP文件的链接,我只想在用户的JRE版本为1.6或更高版本时显示该文件。我一直在使用DeployJavaJavaScript代码(),并使其在除Safari之外的所有浏览器中都能正常工作(通过使用deployJava.versionCheck)。无论出于什么原因,Safari都没有给出最新的JRE版本号——我是通过显示getJREs()函数的值发现这一点的。我已经安装了1.6.0_20,它会显示在其他浏览器中,但Safari一

基本上,我想找出在网页上检查用户JRE版本的最佳方法。我有一个指向JNLP文件的链接,我只想在用户的JRE版本为1.6或更高版本时显示该文件。我一直在使用DeployJavaJavaScript代码(),并使其在除Safari之外的所有浏览器中都能正常工作(通过使用deployJava.versionCheck)。无论出于什么原因,Safari都没有给出最新的JRE版本号——我是通过显示getJREs()函数的值发现这一点的。我已经安装了1.6.0_20,它会显示在其他浏览器中,但Safari一直说目前只安装了1.5.0

我也尝试过使用createWebStartLaunchButtonEx()函数并指定“1.6.0”作为最低版本,但是当我单击按钮时,什么也没有发生(在任何浏览器中)

有什么建议吗

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


最好的办法可能是检查
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
函数getJavaVersion(){ 变量j,匹配; 对于(j=0;j1.6.0_16
不确定它是否对您有帮助,但您可以在jnlp文件中指定最低jre版本作为子句。如果未满足要求,Webstart将不会启动您的应用程序

看到标签了吗

还有,看看


那会有点冒险,不是吗?我的意思是,这检查了浏览器插件用于小程序的java版本,对吗?而且不一定是运行单机/webstart应用程序时使用的默认JRE版本?@aioobe-整个目标是一场赌博,因为用户可能有多个JRE。Java控制面板将允许您为小程序和webstart应用程序设置不同的JRE。因此,让浏览器检查它永远不会是一门完美的科学。OP应该只依赖于
JNLP
的最小JRE属性。
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