How to wait for the Java applet to finish loading on safari?

This does not work in Safari:

<html>
<body>
<applet id="MyApplet" code="MyAppletClass" archive="MyApplet.jar">
<script type="text/javascript">
   alert(document.getElementById('MyApplet').myMethod);
</script>
</body>
</html>

Mymethod is a public method declared in myappletclass

When I first load a page in Safari, it will display an alert before the applet is loaded (so the message box is displayed as undefined) If I refresh the page, the applet is loaded and the alert displays the mymethod() {[native code]} function, as you would expect

Of course, this means that the applet method is not available until it is loaded, but Safari does not prevent JavaScript from running< The same problem occurs with body onload >

What I need is something like < body onappletload = "dosomething()" > How can I solve this problem?

thank you

PS: I'm not sure if it's relevant, but the jar has been signed

Solution

I use a timer that resets and keeps checking multiple times before it gives up

<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>

Note that this assumes that the applet will run in safari I have some examples. One applet needs JAVA 6. Even if you use code similar to the above, you only need to suspend safari I choose to perform browser detection on the server and redirect the user to the error page when the browser does not support applet

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>