document.applet.method在Mounatin Lion上抛出safari 6+JDK7异常



我想获得Java供应商和版本信息。

最近我在mac mountain lion和文档中安装了java1.7.0.7。当我在下面的safari 6中运行下面的HTML文件时,MyApplet.getJavaVendor()抛出异常(类型错误"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;
    }
}

有人能帮我解决这个问题吗?

问题已通过Apple OSX 10.8.2Safari 6.0.1更新

解决

最新更新