你好,堆栈溢出社区,
我有一些代码可以在几乎所有浏览器上运行,除了....(等一等)....IE9 (可能还有其他版本的IE?)。
所以,我在页面中添加了一个applet,一切正常,但是我想检查applet是否已加载,为此,我一直在轮询以查看applet中的函数是否存在。
例如,假设我的java applet中有以下方法:
public int dummy( int a ) {
return a + 1;
}因此,在我的javascript中,我轮询查看函数是否像这样存在(使用jquery,其中#applet是applet标记的id ):
var japp = $("#applet").get(0);
if( japp && japp.dummy ) {
alert( japp.dummy(1) );
}你会注意到,这至少在Chrome和火狐中有效,但在IE9中不起作用。
在IE9中,无论哪个方法是可访问的,japp.dummy始终返回undefined
有没有人知道一个好的IE9解决方案?
谢谢,-Oz
发布于 2012-04-19 22:49:18
我想检查小程序是否已加载,因此,我一直在轮询查看小程序中的函数是否存在。
别干那事。相反,让小程序在init()结束时调用JS函数。当小程序准备就绪时,init()就结束了。
IE9在这里失败,而其他浏览器不会。
将IE9替换为“any browser”,您就会遇到与applet/JRE/JS/browser交互相关的问题。不幸的是,这就是applet的本质。:(
发布于 2012-08-21 18:50:07
这样试一试:
<object id="idOfMyApplet" ... >
<param> ... </param>
</object>
function testApplet() {
var myApplet = document.applets.idOfMyApplet;
if (!myApplet) {
return false;
}
try {
myApplet.publicTestMethod();
} catch(ex) {
return false;
}
return true;
}
var retryCounter = 20;
var appletLoaded = false;
function waitForApplet() {
if (!testApplet()) {
if (retryCounter > 0) {
retryCounter--;
setTimeout("waitForApplet()", 500);
}
return false;
}
appletLoaded = true;
return true;
}https://stackoverflow.com/questions/10229220
复制相似问题