如何等待Java applet在Safari上完成加载?
这在Safari中不起作用:
alert(document.getElementById('MyApplet').myMethod);
myMethod
是MyAppletClass
声明的公共方法。
当我第一次在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
希望能帮助到你!