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