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

如何在AJAX应用程序中检测Java及其版本,java,jquery,ajax,detect,Java,Jquery,Ajax,Detect,我正在使用jquery、jqueryui、ajaxify和许多jquery扩展开发web应用程序。 在应用程序中的某个时候,我必须使用JavaApplet。 小程序通过ajax调用运行,比如jquery.load加载一个生成小程序代码的页面。然后,我想检测运行该应用程序的计算机上是否安装了Java,以及它是否为1.7+版本。只有在使用小程序时才应进行检测,因为此功能仅在特定情况下由有限数量的用户使用 我不能使用deploy.js,因为这个脚本不是为通过ajax调用运行而设计的,只是失败了。 我只

我正在使用jquery、jqueryui、ajaxify和许多jquery扩展开发web应用程序。 在应用程序中的某个时候,我必须使用JavaApplet。 小程序通过ajax调用运行,比如jquery.load加载一个生成小程序代码的页面。然后,我想检测运行该应用程序的计算机上是否安装了Java,以及它是否为1.7+版本。只有在使用小程序时才应进行检测,因为此功能仅在特定情况下由有限数量的用户使用

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

我该怎么做

我将感谢您的帮助。

无论如何,您都应该使用。当我需要进行一些特定的检查时,我打开java_deploy.js,看看它是如何工作的。这并不难理解,真的。例如,在Chrome中,它只插入一个特定的标记,带有特定的uid。没什么复杂的。然后我只是手动执行代码


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

最后我找到了一种检测是否安装了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;
        }


如何使用
navigator.javaEnabled()
检测是否安装了Java,以及
document.applets[0].Version
获取版本?在jQuery中不需要,只需要纯JavaScript。谢谢,我试过了,但是navigator.javaEnabled()在IE,至少在我的版本9中不能正常工作。部署工具包使用deploy.js,正如问题中所述,它不能工作。工具箱中的部署技术使用window.write或,这与通过ajax获取的页面相矛盾。这就是它不能在带有小程序代码的ajax抓取页面中使用的方式。是的,它使用document.write重新加载页面。我已经用$(document.body).append()删除了这段代码,一切正常。是的,它需要重写deploy.js。我只是想在这里找到负责检测的函数,前面已经研究过了,但由于某些原因,我看不到该功能。我不想要任何自动安装功能,纯检测。如果JRE