我有一个托管Java applet的ASP .NET网站。 Java applet需要Java运行时版本1.6 Update 11。
如何检测客户端是否安装了适当的运行时,以便我可以显示信息性消息?
谢谢,
卡尔。
编辑:解决方案必须是独立于平台的。
答案 0 :(得分:10)
此页面介绍了如何并列出一些允许您使用JavaScript检测Java的插件:http://www.pinlady.net/PluginDetect/JavaDetect.htm
除此之外,请尝试以下代码:
if (navigator.javaEnabled()) {
//Java is enabled
}
答案 1 :(得分:6)
以下链接详细介绍了Java应用的部署提示。
http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html
从链接引用
部署工具包 为避免浏览器兼容性问题,Deployment Toolkit(deployJava.js)提供了自动生成部署applet和Java Web Start应用程序所需的HTML的JavaScript函数。开发人员应调用这些功能,以便在各种浏览器中以一致的方式部署他们的解决方案。
答案 2 :(得分:5)
我的方法是使用JavaScript navigator.javaEnabled()
检查是否有某些 Java版本。
然后,您可以在Java applet本身中使用System.getProperty("java.version")
。这应该足以为您提供版本信息,例如1.6.0_03
。
答案 3 :(得分:2)
虽然到目前为止大多数答案都是围绕用户代理(浏览器)本身的检测,但听起来就像你提到ASP.NET一样,你想在服务器端进行这种检测。如果是这样,你有几个选择。
首先,您可以嗅探来自用户代理的HTTP请求标头。安装了Java的计算机和浏览器通常会包含一个标题,向服务器提供您可以接收的提示。以下是此方法的一些有用链接: http://www.developershome.com/wap/detection/ https://metacpan.org/pod/HTTP::Browscap
您拥有的另一个选项是向用户代理发送javascript以使用此问题中其他答案中的一种技术执行检测,然后使用ajax回调告诉服务器您发现了什么。
答案 4 :(得分:1)
如果您不介意使用需要运行较旧版本的基本Java小程序,可以使用this article并继续根据该结果。
答案 5 :(得分:0)
也许这个脚本会有所帮助。但这只是Windows版本。
<script language='javascript' type='text/javascript'>
var javaVersion;
var shell;
try
{
// Create WSH(WindowsScriptHost) shell, available on Windows only
shell = new ActiveXObject("WScript.Shell");
if (shell != null)
{
// Read JRE version from Window Registry
try
{
javaVersion = shell.regRead("HKEY_LOCAL_MACHINE\\Software\\JavaSoft\\Java Runtime Environment\\");
}
catch(e)
{
// handle exceptions raised by 'shell.regRead(...)' here
// so that the outer try-catch block would receive only
// exceptions raised by 'shell = new ActiveXObject(...)'
alert('error reading registry');
}
}
}
catch(e)
{
// Creating ActiveX controls thru script is disabled
// in InternetExplorer security options
// To enable it:
// a. Go to the 'Tools --> Internet Options' menu
// b. Select the 'Security' tab
// c. Select zone (Internet/Intranet)
// d. Click the 'Custom Level..' button which will display the
// 'Security Settings' window.
// e. Enable the option 'Initialize and script ActiveX controls
// not marked as safe'
activeXDisabled = true;
}
// Check whether we got required (1.6) Java Plugin
if ( javaVersion != null && javaVersion.indexOf("1.6"))
{
pluginDetected = true;
alert('it is installed!')
}
if (pluginDetected)
{
// show applet page
}
else if (confirm("Java Plugin 1.6 not found"))
{
// show install page
alert('not found')
}
else
{
// show error page
alet('error')
}
</script>
答案 6 :(得分:0)
如果解决方案必须与平台无关。我将排除javascript提供的所有解决方案。
你可以编写一个非常简单的Applet,它由古老的Classic VM支持。让applet检测JRE版本,并显示消息。
如果您接受Javascript,您可能也会对this article感兴趣,这与WebStart应用程序的自动安装程序有关。
答案 7 :(得分:0)
使用deployJava.js函数getJREs()根据用户的Java版本构建动态页面。
使用http://cowwoc.blogspot.com/2008/12/tracking-java-versions-using-google.html跟踪使用Google Analytics的网络访问者使用的Java版本。
奖励步骤:使用step 2中的源代码作为如何实施第1步的示例。
答案 8 :(得分:0)
只需将amd粘贴到浏览器地址栏即可! 检查它是否对您有用。
javascript: for(i = 0; i < navigator.plugins.length; i++) alert(navigator.plugins[i].name);
您需要在插件数组中获取Java的位置,也许您可以使用正则表达式检查版本。你可以看一下插件javascript对象。
问候!
答案 9 :(得分:0)
答案 10 :(得分:0)
以下链接是我开始工作的方式。它有一个JS,你可以得到它为Java部署。上面提到了这个链接,但我认为它的一个例子会很好。
这些是我最终需要解决问题的样本。
下载deployJava.js文件后,您可以放置一些内容以确保安装了Java:
if (deployJava.getJREs().length > 0) {
//Your code to start java
}
确保安装了特定版本:
if (deployJava.versionCheck(version)) {
//Your version specific code
}
启动最新Java的安装程序:
deployJava.installLatestJava();
如果您愿意,可以使用特定版本:
deployJava.installJRE(version);
答案 11 :(得分:-1)
复制并粘贴到浏览器地址栏中以检查:
的javascript:警报(navigator.javaEnabled())
适用于Mozilla(FF3)和IE7。 (64)