检测浏览器是否可以成功加载Java Applet - Firefox上出现意外行为

时间:2009-12-12 03:43:28

标签: java asp.net firefox applet version

我有一个加载Java Applet的ASP.NET页面。我首先检查客户端计算机是否能够通过为标记提供ID“AppletID”来运行applet(Java版本等) - 然后我调用此applet的函数,该函数始终返回“true”。

所以,下面一行代码:var isRunning = document.getElementById('AppletID')。如果applet中的方法“appletRunning”被成功调用,appletRunning()将返回“true”(表示客户端可以加载小程序正确)。

这一直持续到最近。但是,最近,Firefox浏览器给了我一个内部对话框,显示“你没有所需的最低版本的Java ...”消息。 (其他时候它正确检测到可以加载applet)。然后applet继续正确加载,但不应该首先显示对话框。我想知道为什么会发生这种情况 - 可能是document.getElementById('AppletID')在选中时为null,从而导致“checkAppletRunning”方法的“catch”部分? IE总是正常,永远不会返回此对话框。

以下是.aspx页面的代码。

                  

<script type="text/javascript" language="javascript">
    window.onload = function()
    {
        var appletCheck = checkAppletRunning();

        if (appletCheck == 1)
        {
            alert("Server is down...please try again later.");
            window.location.href = "Default.htm";
        }
        else if (appletCheck == 2)
        {
            alert("You do not have the required minimum version of Java enabled or installed. Java must be enabled or downloaded from http://www.java.com");
            window.location.href = "Default.htm";
        }
    }

    function checkAppletRunning()
    {
        var OK = 0;
        var serverDown = 1;
        var appletNotSupported = 2;

        try 
        {
            var isRunning = document.getElementById('AppletID').appletRunning();
            if (isRunning)
            {
                return OK;
            }
            else
            {
                return appletNotSupported;
            }
        } 
        catch (e)
        {
            return appletNotSupported;
        }
    }
</script>

我很感激这方面的任何帮助,

提前致谢, 蒂莫西

2 个答案:

答案 0 :(得分:0)

可能是applet还没有完成启动。

尝试为异常返回不同的结果(或记录异常)以更好地了解其失败的原因。

答案 1 :(得分:0)

更简单的方法是依赖以下事实:如果Java不可用,那么不会解释APPLET标记。

<HTML><HEAD></HEAD><BODY>
<APPLET CODE="MyApplet.class"
        NAME="myApplet"
        HEIGHT=400 WIDTH=400>

    <A HREF="nojava.html">Oups! You don't have JAVA enabled, click here.</A>

</APPLET>
</BODY></HTML>