6

ユーザーがボタンをクリックした後に最終的にアプレットを起動する .aspx ページを開発しています (<applet>タグを使用しています)。したがって、ユーザーのブラウザでJavaが有効/インストールされているかどうかを検出したいと思います。

navigator.javaEnabled() メソッドを使用しています。ただし、これは IE7 では問題なく動作しますが、Firefox 3.0.12 では一貫性のない結果が返され (さまざまなブラウザーについてはわかりません)、時々 Java が有効になっていると表示されます (これは有効です)。アプレットからこのページに再び戻ると、false が報告されます。Firefox を閉じてアプレット起動ページに戻ると、navigator.javaEnabled() は再び true を (正しく) 報告します。

この一貫性のない動作を決定しているものはありますか、それとも navigator.javaEnabled() は Java アプレット チェックを行う最良の方法ではありませんか?

前もって感謝します。

4

4 に答える 4

11

アプレットでメソッドを作成します

public boolean isRunning() { return true; }

次に、アプレットを作成します。

<applet src=".../yourapplet.jar" id="someId">

そして今、このコードをいくつかのヘルパー関数でラップします

try {
  var x = document.getElementById('someId').isRunning()
  return x;
} catch(e) {
  return false;
}

なぜこれが機能するのですか?アプレットが実行されると、trueが返されます。アプレットが実行されない場合、またはJavaがサポートされていない場合は、例外が発生するため、falseが発生します。

于 2009-07-24T12:26:08.390 に答える
1

BrowserHawk という商用製品もあります。

http://www.cyscape.com/products/bhawk/workshop/detectjava.aspx?bhcp=1

于 2010-05-14T14:45:26.193 に答える
1

object タグを使用することもできます。

これを使用すると、インストールされている Java のバージョンを特定し、存在しない場合はダウンロードするようにユーザーに促すことができます。

これは、私が作業しているアプリから取得したオブジェクト タグのサンプルです。JRE の複雑さにより、他のアプリケーションとの互換性のために 1.4.2_03 で実行する必要がありました。

 <object classid="clsid:CAFEEFAC-0014-0002-0003-ABCDEFFEDCBA" id="MyApplet" 
 name="MyApplet" width="4" height="4" 
 codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_2_03-windows-i586.cab#Version=1,4,2,03">

classid は、ロードする Java のバージョンを指定します。これを特定の JRE、特定のファミリ、つまり 1.4.X などの最新バージョンに設定できます。

コードベースは、ユーザーが classid の設定を満たさない場合にどこに誘導されるかを制御します。

クライアントに 1.5 以降がインストールされている場合、セキュリティ上の制約により古い JRE を参照できないことに注意してください。これは Windows のレジストリ設定で上書きできますが、お勧めしません。

同じファミリ内の古い JRE のみを参照できるように、セキュリティが設定されていると思います。つまり、ユーザーは 1.6.0.10 を持っています。1.6.0.1 を参照できますが、1.5.X では何も移動できません。1.6.0.11 の後にセキュリティ ダイアログがポップアップ表示されたのを覚えていると思いますが、以前と同様にデフォルトで要求が拒否されます。

于 2009-07-31T20:45:39.510 に答える
0

このライブラリには、私が見つけることができる最も包括的なドキュメントと実装があり、かなりうまく機能すると思います

http://www.pinlady.net/PluginDetect/Java/

于 2012-12-28T10:45:07.360 に答える