Ped*_*ino 6 javascript java safari dom-events
这在Safari中不起作用:
<html>
<body>
<applet id="MyApplet" code="MyAppletClass" archive="MyApplet.jar">
<script type="text/javascript">
alert(document.getElementById('MyApplet').myMethod);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
myMethod是一个声明的公共方法MyAppletClass.
当我第一次在Safari中加载页面时,它会在applet加载完成之前显示警报(因此会显示消息框undefined).如果我刷新页面,则已经加载了小程序并显示警报function 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>
Run Code Online (Sandbox Code Playgroud)
请注意,这假定applet将在Safari中运行.我有一些实例,其中一个applet需要Java 6,即使使用与上面类似的代码,也只需挂起Safari.我选择在服务器上进行浏览器检测,并在浏览器不支持applet时将用户重定向到错误页面.
| 归档时间: |
|
| 查看次数: |
10895 次 |
| 最近记录: |