document。<applet name =“”>。isAlive()在某些浏览器中失败</applet>

时间:2012-11-15 21:09:01

标签: java javascript applet

在加载页面的其余部分之前,我有一些java脚本来检查applet是否已完成加载。它已经工作了多年,现在似乎在Firefox 16和IE 7中都失败了。它适用于IE 8

有关它为什么会破碎以及可能解决的原因的任何建议?

<applet name="env" archive="portal-applet-envir.jar" code="com/deleted/AppletEnvironment.class" height="1" mayscript="true" width="1">
</applet>
<table width="98%" align="center"><tr><td>
<script language="javascript">
function waituntilok() {
   if (document.env.isActive()) {
     doit();
  }
  else {
      var ct = 0;
      while (! document.env.isActive())
      {
      }
     doit();
   }
}
[....]
waituntilok();
</script>
</td></tr></table>

1 个答案:

答案 0 :(得分:1)

在初始化applet之前调用document.env.isActive()时,FF会注册“无此方法”错误并退出该函数。在调试这些东西时检查错误控制台是值得的。

同样可疑的是1x1的applet大小。有一些旨在保护用户的工具可以删除“可疑的小”HTML元素。

此版本适用于FF。在IE和IE中试用它FF并报告回来。

<html>
<body>
<applet
    name="env"
    archive="http://pscode.org/lib/mime.jar"
    code="org.pscode.mime.MimeType"
    height="100"
    mayscript="true"
    width="600">
</applet>
<table width="98%" align="center">
<tr>
<td>
<script language="javascript">
function waituntilok() {
    if (document) {
        alert('document');
    }
    if (document.env) {
        alert('document.env');
    }
    if (document.env.isActive()) {
        doit();
    } else {
        var ct = 0;
        while (! document.env.isActive())
        {
        }
        doit();
    }
}

function doit() {
    alert('Just Do It!');
}

setTimeout('waituntilok()', 15000);
</script>
</td>
</tr>
</table>
</body>
</html>