【问题标题】:How to detect Java and its version in AJAX app如何在 AJAX 应用程序中检测 Java 及其版本
【发布时间】:2012-06-16 11:05:06
【问题描述】:

我正在开发带有 jquery、jqueryui、ajaxify 和许多 jquery 扩展的网络应用程序。 在应用程序的某个时刻,我必须使用 Java 小程序。 小程序通过 ajax 调用运行,假设 jquery.load 加载生成小程序代码的页面。然后我想检测运行该应用程序的计算机上是否安装了 Java,以及它是否是 1.7+ 版本。仅当要使用小程序时才应进行检测,因为此功能仅供有限数量的用户使用,并且仅在某些情况下使用。

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

我该怎么做?

感谢您的帮助。

【问题讨论】:

  • navigator.javaEnabled() 用于检测是否安装了 Java,document.applets[0].Version 用于获取版本怎么样? jQuery 中不需要,只需要纯 JavaScript。
  • 谢谢,我试过了,但是 navigator.javaEnabled() 不能在 IE 上正常工作,至少是我的 9 版。

标签: java jquery ajax detect


【解决方案1】:

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

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

【讨论】:

  • 部署工具包使用deploy.js,如问题所述,它不起作用。工具包中的部署技术使用 window.write 或与通过 ajax 获取的页面相矛盾。这样它就不能在带有小程序代码的 ajax 获取页面中使用。
  • 是的,它使用 document.write 重新加载页面。我已经用 $(document.body).append() 删除了这段代码,一切正常。是的,需要重写deploy.js。
  • 我只是想在这里找到负责检测的功能 - java.com/js/deployJava.txt,之前已经调查过了,但由于某种原因我看不到该功能。我不想要任何自动安装功能,纯粹的检测。如果 JRE
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 2013-04-09
    • 2011-08-12
    • 2015-03-04
    • 2013-06-26
    • 1970-01-01
    • 2012-05-23
    • 2017-04-14
    • 2011-09-11
    相关资源
    最近更新 更多