Javaベンダーとバージョン情報を取得したかったのです。
最近、Mac MountainLionとdocument.MyApplet.getJavaVendor()にjava 1.7.0.7をインストールしました。以下のサファリ6で説明するように、以下のHTMLファイルを実行すると、例外がスローされます(タイプエラー「undefined」は関数ではありません)。
しかし、同じことがjava1.6.0.35でも正常に機能します。
アプレットがロードされない限り、上記のように例外がスローされますが、アプレットがロードされると、期待どおりの情報が得られるはずです。
追加情報: Firefoxでも同じことを試みましたが、両方のJREで問題なく動作しました。
アプレットのHTMLコード:
<applet name="MyApplet" codebase = "./code/" archive="MyApplet.jar" code="MyApplet.class" width="1" height="1" style="border-width:0;" MAYSCRIPT=true>
<PARAM NAME="type" VALUE="application/x-java-applet;version=1.4"/>
<PARAM NAME="cache_option" VALUE="plugin"/>
<PARAM NAME="cache_archive" VALUE="MyApplet.jar"/>
<PARAM NAME="cache_version" VALUE="5.6.3.1"/>
<PARAM NAME="scriptable" VALUE="true"/>
<PARAM name="codebase_lookup" value="false"/>
</applet>
Javaスクリプトコード:
function verifyJRE() {
try {
var tmpVendor = document.MyApplet.getJavaVendor();
var tmpVersion = document.MyApplet.getJavaVersion();
var strJavaVendor = new String( tmpVendor);
var strJavaVersion = new String( tmpVersion);
if ( (strJavaVendor.indexOf("Apple") != -1) || (strJavaVendor.indexOf("Sun") != -1) || (strJavaVendor.indexOf("Oracle") != -1)) {
// Do something;
} else {
// Do Something; }
} catch (e) {
iCount++;
if (iCount < 10)
// waiting for Applet to Load;
setTimeout('verifyJRE()', 200);
else {
// logout from application;
}
}
アプレットコード:
import java.applet.Applet;
import java.io.PrintStream;
public class MyApplet extends java.applet.Applet {
private String strJavaVendor;
private String strJavaVersion;
public MyApplet() {
}
public void init() {
strJavaVendor = System.getProperty("java.vendor");
strJavaVersion = System.getProperty("java.version");
}
public String getJavaVendor() {
System.out.println(new StringBuilder("Java Vendor is: ").append(strJavaVendor).toString());
return strJavaVendor;
}
public String getJavaVersion() {
System.out.println(new StringBuilder("Java Version is: ").append(strJavaVersion).toString());
return strJavaVersion;
}
}
誰かがこの問題で私を助けることができますか?