这是 Firefox(很可能)或 Java 8_91 中的错误。似乎对小程序方法的任何过早调用都会永久地连接到小程序。
然而,小程序支持有一个检查小程序状态的新功能,通过设置参数启用<param name="java_status_events" value="true"/>
。这反过来允许status
在小程序加载时进行检查。如果启用此功能,并使用它来防止在小程序加载之前调用任何小程序方法,那么一切正常。
function isAppletActive(app) {
// assuming `app` is the applet element...
if(app.status==1) { return false; } // still loading
if(app.status==2) { throw "Applet load failed"; }
try { active = app.isActive(); } // IE check
catch(ex) {
try { active = app.isActive; } // Firefox check
catch(ex1) { /* NEVER swallow exceptions! */ }
}
//alert(active);
return active;
}
顺便说一句,Firefox 使用app.isActive()
,而不是app.isActive
,尽管谁知道它过去做了什么。