是否有一种可靠的方法使用JavaScript检测客户端计算机上安装了哪个版本的Java?
是否有一种可靠的方法使用JavaScript检测客户端计算机上安装了哪个版本的Java?
根据我们通过谷歌找到这个网页的事实,只是为了帮助下一位需要找这个答案的人。
navigator.javaEnabled()
http://www.w3schools.com/jsref/met_nav_javaenabled.asp
<script src="http://www.java.com/js/deployJava.js"></script>
<script>
var versions = deployJava.getJREs();
</script>
这里是我发现用JavaScript查找Java版本的最佳方式,但要小心使用,因为它的版本检测非常依赖于操作系统和浏览器,在旧浏览器版本或安装了旧版Java的最新浏览器上,它可能无法按预期工作。在正式使用之前请务必进行实际测试。
查看Java部署工具包中的代码。
Java版本:
/**
* @return NULL if not version found. Else return some things like: '1.6.0_31'
*/
var JavaVersion: function()
{
var result = null;
// Walk through the full list of mime types.
for( var i=0,size=navigator.mimeTypes.length; i<size; i++ )
{
// The jpi-version is the plug-in version. This is the best
// version to use.
if( (result = navigator.mimeTypes[i].type.match(/^application\/x-java-applet;jpi-version=(.*)$/)) !== null )
return result[1];
}
return null;
}
Java和启用Java:
var IsJava: function()
{
return typeof(navigator.javaEnabled) !== 'undefined' && navigator.javaEnabled();
}
这些函数适用于Opera、Firefox和Chrome浏览器。我没有IE浏览器。navigator.mimeTypes
在 IE11 中似乎存在。 - mopo922检测逻辑在Windows7-64位的IE32上无法正常工作。它无法检测到之前安装的Java版本。
经过进一步阅读,发现Windows上的Java部署工具包使用ActiveX classid,这可能会使您的应用程序面临黑客攻击(请参见http://www.kb.cert.org/vuls/id/886582)。我退出了。