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

这在Safari中不起作用:

    alert(document.getElementById('MyApplet').myMethod);    

myMethodMyAppletClass声明的公共方法。

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

当然,这意味着applet方法在加载之前不可用,但Safari并没有阻止JavaScript运行。 同样的问题。

我需要的是像 。 我该如何解决这个问题?

谢谢

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

我使用一个计时器,它会在放弃之前重置并保持多次检查。

  

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

这是我写的一个通用函数:

 /* Attempt to load the applet up to "X" times with a delay. If it succeeds, then execute the callback function. */ function WaitForAppletLoad(applet_id, attempts, delay, onSuccessCallback, onFailCallback) { //Test var to = typeof (document.getElementById(applet_id)); if (to == "function") { onSuccessCallback(); //Go do it. return true; } else { if (attempts == 0) { onFailCallback(); return false; } else { //Put it back in the hopper. setTimeout(function () { WaitForAppletLoad(applet_id, --attempts, delay, onSuccessCallback, onFailCallback); }, delay); } } } 

这样叫:

 WaitForAppletLoad("fileapplet", 10, 2000, function () { document.getElementById("fileapplet").getDirectoriesObject("c:/"); }, function () { alert("Sorry, unable to load the local file browser."); }); 

我前段时间遇到了类似的问题,将MAYSCRIPT添加到applet标签解决了我的问题。

看一下这个页面: http : //www.htmlcodetutorial.com/applets/_APPLET_MAYSCRIPT.html

希望能帮助到你!