最後に、Java がインストールされているかどうかを検出する方法を見つけました。最初は navigator.javaEnabled() でやってみましたが、IE ではうまく動きませんでした。その後、Java デプロイメント ツールキットを試しましたが、window.write が ajax 経由でフェッチされたページと互換性がないため、成功しませんでした。次に、odiszapc のアドバイスに従って Java デプロイメント ツールキットをカスタマイズしようとしましたが、その日の終わりまでに、変更されていない Java 開発ツールキットを使用し、単純にその versionCheck メソッドを使用しました。
Java が検出されない場合、ユーザーは JRE をダウンロードしてインストールするように指示され、リンクが提供されます。正しいバージョンの Java がインストールされている場合、サブページは ajax を介してパラメータ javaOK=1 でリロードされます。このような場合、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;
}