如何在AJAX应用程序中检测Java及其版本

时间:2012-06-16 11:05:07

标签: java jquery ajax detect

我正在使用jquery,jqueryui,ajaxify和许多jquery扩展来处理Web应用程序。 在应用程序的某些时候,我必须使用Java applet。 applet通过ajax调用运行,假设jquery.load加载一个生成applet代码的页面。我想检测运行应用程序的计算机上是否安装了Java,以及是否为1.7+版本。只有在要使用applet时才会进行检测,因为此功能仅供有限数量的用户使用,并且仅在某些情况下使用。

我不能使用deploy.js,因为这个脚本不是设计为通过ajax调用运行而只是失败。 我想只在它真正需要的时候检测java,即当用户要启动applet时。

我该怎么做?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

在任何情况下都应该使用Java Deployment Toolkit。当我需要一些特定的检查时,我打开java_deploy.js,看看它是如何工作的。真的,这并不难理解。例如,在Chrome中,它只会插入一个特定的 标记,其中包含 uid 。没什么复杂的。然后我只是手动执行代码。

在deploy.js结束时,它只是在页面加载后启动Java检查。一种方法调用。我刚刚删除了这段代码,并在我自己的代码中手动启动它。

答案 1 :(得分:0)

最后,我找到了一种检测java是否已安装的方法。 起初我尝试使用navigator.javaEnabled(),但它与IE无法正常工作。 然后我尝试了Java部署工具包,但由于window.write与通过ajax获取的页面不兼容而没有成功。 然后我尝试在odiszapc建议之后自定义Java部署工具包......但是到了最后我使用了未经修改的Java开发工具包,我只使用了它的versionCheck方法。

如果未检测到java,则告知用户下载并安装JRE,并提供链接。 如果安装了正确版本的Java,则通过参数javaOK = 1的ajax重新加载子页面。在这种情况下,没有java检测,只有纯applet标签,简而言之:


    $SuccessUrl = FileName . "?javaOK=1&" . $_SERVER['QUERY_STRING'];   
    (...)
    $java_detect=EOQ (heredoc shoud be here, some tags don't work)
        
        var version = '1.7'; //required version

        var check = deployJava.versionCheck(version+"+"); //1.7 and higher
        if(!check){ 
          $("#sign_dialog").html("$java_err"); //wrong java or no java at all
        }else{
          $("#sign_dialog").load("$SuccessUrl");
        }
      
    EOQ;
    (...)
        if(isset($_GET['javaOK']) && $_GET['javaOK']=='1'){
          echo $applet;
        }else{
          echo $java_detect;
        }