如何从ASP.NET网站检测安装在客户端上的Java运行时?
我有一个ASP.NET网站,上面有一个Java小程序。Java小程序需要Java运行时的版本1.6更新11 如何检测客户机是否安装了适当的运行时,以便在客户机未安装时显示信息性消息 谢谢 卡尔如何从ASP.NET网站检测安装在客户端上的Java运行时?,java,asp.net,applet,version-detection,Java,Asp.net,Applet,Version Detection,我有一个ASP.NET网站,上面有一个Java小程序。Java小程序需要Java运行时的版本1.6更新11 如何检测客户机是否安装了适当的运行时,以便在客户机未安装时显示信息性消息 谢谢 卡尔 编辑:解决方案必须是独立于平台的。本页介绍了如何使用JavaScript检测Java,并列出了一些插件: 除此之外,还可以尝试以下代码片段: if (navigator.javaEnabled()) { //Java is enabled } 也许这个脚本会有帮助。不过,这只是Windows操作
编辑:解决方案必须是独立于平台的。本页介绍了如何使用JavaScript检测Java,并列出了一些插件: 除此之外,还可以尝试以下代码片段:
if (navigator.javaEnabled()) {
//Java is enabled
}
也许这个脚本会有帮助。不过,这只是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>
var-javaVersion;
var外壳;
尝试
{
//创建WSH(WindowsScriptHost)shell,仅在Windows上可用
shell=新的ActiveXObject(“WScript.shell”);
if(shell!=null)
{
//从窗口注册表读取JRE版本
尝试
{
javaVersion=shell.regrad(“HKEY\U LOCAL\U MACHINE\\Software\\JavaSoft\\Java Runtime Environment\”;
}
捕获(e)
{
//处理由“shell.Regrad(…)”引发的异常
//这样外部try-catch块将只接收
//“shell=new ActiveXObject(…)”引发的异常
警报(“读取注册表时出错”);
}
}
}
捕获(e)
{
//已禁用通过脚本创建ActiveX控件
//InternetExplorer中的安全选项
//要启用它,请执行以下操作:
//a.进入“工具-->互联网选项”菜单
//b.选择“安全”选项卡
//c.选择区域(互联网/内部网)
//d.单击“自定义级别…”按钮,该按钮将显示
//“安全设置”窗口。
//e.启用“初始化ActiveX控件并为其编写脚本”选项
//未标记为安全'
activeXDisabled=true;
}
//检查我们是否获得了必需的(1.6)Java插件
if(javaVersion!=null&&javaVersion.indexOf(“1.6”))
{
pluginDetected=true;
警报('已安装!')
}
如果(插件未检测)
{
//显示小程序页面
}
else if(确认(“未找到Java插件1.6”))
{
//显示安装页面
警报('未找到')
}
其他的
{
//显示错误页
alet('错误')
}
复制并粘贴到浏览器地址栏以检查:
javascript:alert(navigator.javaEnabled())
在Mozilla(FF3)和IE7中工作。(x64)我的方法是使用JavaScript
navigator.javaEnabled()
检查是否有可用的一些Java版本
然后可以在java小程序本身中使用
System.getProperty(“java.version”)
。如果解决方案必须独立于平台,那么这应该足以获取版本信息,例如1.6.0\u 03
。我将排除javascript提供的所有解决方案
您可以编写一个非常简单的Applet,它由古老的经典VM支持。让小程序检测JRE版本,并显示消息
如果您接受Javascript,您可能还对其中有关WebStart应用程序的自动安装程序感兴趣 下面的链接详细介绍了java应用程序的部署技巧 引用链接 部署工具包 为了避免浏览器兼容性问题,Deployment Toolkit()提供了JavaScript函数,可以自动生成部署小程序和Java Web Start应用程序所需的HTML。开发人员应该调用这些函数,以便以一致的方式跨各种浏览器部署其解决方案
如果您不介意使用需要更旧版本才能运行的基本java小程序,那么您可以使用并基于该结果继续
只需复制并粘贴此代码在您的浏览器地址栏! 检查它是否对您有用
javascript: for(i = 0; i < navigator.plugins.length; i++) alert(navigator.plugins[i].name);
javascript:for(i=0;i
您需要获得Java在插件数组中的位置,也许可以使用正则表达式或其他方法检查版本。您可以查看插件javascript对象
问候 虽然到目前为止,大多数答案都是围绕着用户代理(浏览器)本身的检测,但从您提到ASP.NET时听起来,您希望在服务器端进行检测。如果是这样,你有几个选择 首先,您可以嗅探来自用户代理的HTTP请求头。安装了Java的计算机和浏览器通常会包含一个标题,向服务器提供这方面的提示,您可以从中获取。以下是有关此方法的一些有用链接: 另一个选项是将javascript发送到用户代理,使用本问题其他答案中的一种技术执行检测,然后使用ajax回调告诉服务器您发现了什么。检查此选项
下面的链接是我让它工作的方式。它有一个用于Java部署的JS。上面提到了这个链接,但我想举个例子就好了 这些是我最终需要解决问题的示例 下载deployJava.js文件后,您可以放置一些东西以确保安装了java:
if(deployJava.getJREs().length>0){
//启动java的代码
}
确保安装了特定版本:
if(部署java.versionCheck(版本)){
//您的版本特定代码
}
启动最新Java版本的安装程序:
deployJava.installLatestJava();
或特定版本,如果您希望:
installJRE(版本);
谢谢您的回复