Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ASP.NET网站检测安装在客户端上的Java运行时?_Java_Asp.net_Applet_Version Detection - Fatal编程技术网

如何从ASP.NET网站检测安装在客户端上的Java运行时?

如何从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操作

我有一个ASP.NET网站,上面有一个Java小程序。Java小程序需要Java运行时的版本1.6更新11

如何检测客户机是否安装了适当的运行时,以便在客户机未安装时显示信息性消息

谢谢

卡尔


编辑:解决方案必须是独立于平台的。

本页介绍了如何使用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小程序,那么您可以使用并基于该结果继续

  • 根据用户的Java版本,使用函数getJREs()构建动态页面

  • 用于使用Google Analytics跟踪web访问者使用的Java版本

  • 奖励步骤:使用中的源代码作为如何实现步骤1的示例


  • 只需复制并粘贴此代码在您的浏览器地址栏! 检查它是否对您有用

    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(版本);
    

    谢谢您的回复