微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何等待Java applet在Safari上完成加载?

这在Safari中不起作用:
<html>
<body>
<applet id="MyApplet" code="MyAppletClass" archive="MyApplet.jar">
<script type="text/javascript">
   alert(document.getElementById('MyApplet').myMethod);
</script>
</body>
</html>

myMethod是在MyAppletClass中声明的公共方法.

当我第一次在Safari中加载页面时,它会在applet加载完成之前显示警报(因此消息框显示为undefined).如果我刷新页面,则applet已经加载,并且警报会显示myMethod(){[native code]}函数,正如您所期望的那样.

当然,这意味着applet方法在加载之前不可用,但Safari并没有阻止JavaScript运行. < body onLoad>也会出现同样的问题.

我需要的是像< body onAppletLoad =“doSomething()”>.我该如何解决这个问题?

谢谢

PS:我不确定它是否相关,但JAR已签署.

解决方法

我使用一个计时器,在它放弃之前重置并保持多次检查.
<script language="text/javascript" defer>

function performAppletCode(count) {
    var applet = document.getElementById('MyApplet');

    if (!applet.myMethod && count > 0) {
       setTimeout( function() { performAppletCode( --count ); },2000 );
    }
    else if (applet.myMethod) {
       // use the applet for something
    }
    else {
       alert( 'applet Failed to load' );
    }
}  

performAppletCode( 10 );

</script>

请注意,这假定applet将在Safari中运行.我有一些实例,其中一个applet需要Java 6,即使使用与上面类似的代码,也只需挂起Safari.我选择在服务器上进行浏览器检测,并在浏览器不支持applet时将用户重定向错误页面.

原文地址:https://www.jb51.cc/java/127439.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐