【发布时间】:2010-10-01 05:00:24
【问题描述】:
是否有可靠的方法来检测使用 JavaScript 的客户端机器上安装了哪个版本的 Java?
【问题讨论】:
-
查看解决方案here。像魅力一样工作(至少在本地机器上,但我没有在不同的环境中测试它)。
标签: java javascript xhtml
是否有可靠的方法来检测使用 JavaScript 的客户端机器上安装了哪个版本的 Java?
【问题讨论】:
标签: java javascript xhtml
根据我们通过 google 找到此页面的事实,只是为了帮助下一个找到此页面的人。
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>
http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html#deplToolkit
这是我发现使用 JavaScript 查找 Java 版本的最佳方法,但请谨慎使用,因为它的版本检测实际上取决于操作系统/浏览器,并且在旧浏览器版本或安装了旧 Java 的最新浏览器上,它会不能按预期工作。花点时间进行实际测试,然后再将其用于生产环境。
【讨论】:
查看Java Deployment Toolkit中的代码。
【讨论】:
谷歌搜索
detect "java version" using javascript
产生几个结果,this one 看起来可能有用。本质上,它会尝试加载 Java 小程序,然后 JavaScript 会询问小程序。
【讨论】:
detect "java version" using javascript的第一个搜索结果
您可以从这里使用 PluginDetect 库: http://www.pinlady.net/PluginDetect/
【讨论】:
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 中
检测逻辑在 Windows7-64 上的 IE32 中不起作用。它无法检测到它之前安装的 java 版本。
好吧,在进一步阅读之后,Windows 上的 Java 部署工具包使用 ActiveX classid,这可能会将您的应用程序暴露给黑客(请参阅http://www.kb.cert.org/vuls/id/886582)。我出去了。
【讨论】:
如果您使用 Google Analytics,this post 可能会有所帮助(有关详细信息,请参阅forum thread)。
【讨论】:
我发现Java部署工具包提供的JavaScript解决方案报错...“deployJava.do_initialize is not a function”。
我多年来广泛使用并适用于所有浏览器的一个解决方案是 Java 版本显示小程序。不幸的是,原作者的网站似乎已经消失了,但您可以在此处下载Java Version Display Applet 的副本。
【讨论】: