我正在使用jquery,jqueryui,ajaxify和许多jquery扩展来处理Web应用程序。在应用程序中的某个时刻,我必须使用 Java 小程序。小程序通过 ajax 调用运行,假设 jquery.load 加载一个生成小程序代码的页面。然后我想检测运行该应用程序的计算机上是否安装了 Java,以及它是否为 1.7+ 版。仅当要使用小程序时,才应进行检测,因为此功能将由有限数量的用户使用,并且仅在某些情况下使用。
我不能使用 deploy.js,因为此脚本不是为通过 ajax 调用运行而设计的,并且只是失败。我想只在真正需要的时候检测java,即当用户要启动小程序时。
我该怎么做?
我将感谢您的帮助。
在任何情况下都应该使用 Java Deployment Toolkit。当我需要一些特定的检查时,我会打开java_deploy.js,看看它是如何工作的。真的,这并不难理解。例如,在Chrome中,它只是插入一个带有特定uid的特定标签。没什么复杂的。然后我只是手动执行代码。
在部署结束时.js它只是在页面加载后启动 Java 检查。一个方法调用。我刚刚删除了这段代码,并在我自己的代码中手动启动它。
我找到了一种方法来检测是否安装了java。起初我尝试使用navigator.javaEnabled(),但它在IE上无法正常工作。然后我尝试了Java部署工具包,但由于window.write与通过ajax获取的页面不兼容,因此没有成功。然后我尝试按照 odiszapc 的建议自定义 Java 部署工具包......但是在一天结束时,我使用了未经修改的Java开发工具包,只是使用了它的versionCheck方法。
如果未检测到 java,则会告诉用户下载并安装 JRE,并提供链接。如果安装了正确版本的 Java,则通过参数 javaOK=1 通过 ajax 重新加载子页面。在这种情况下,没有java检测,只有纯小程序标签,简而言之:
$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;
}