首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查IE9中的javascript小程序中是否存在Java函数

检查IE9中的javascript小程序中是否存在Java函数
EN

Stack Overflow用户
提问于 2012-04-19 21:33:59
回答 2查看 2.7K关注 0票数 1

你好,堆栈溢出社区,

我有一些代码可以在几乎所有浏览器上运行,除了....(等一等)....IE9 (可能还有其他版本的IE?)。

所以,我在页面中添加了一个applet,一切正常,但是我想检查applet是否已加载,为此,我一直在轮询以查看applet中的函数是否存在。

例如,假设我的java applet中有以下方法:

代码语言:javascript
复制
public int dummy( int a ) {
  return a + 1;
}

因此,在我的javascript中,我轮询查看函数是否像这样存在(使用jquery,其中#applet是applet标记的id ):

代码语言:javascript
复制
var japp = $("#applet").get(0);
if( japp && japp.dummy ) {
  alert( japp.dummy(1) );
}

你会注意到,这至少在Chrome和火狐中有效,但在IE9中不起作用。

在IE9中,无论哪个方法是可访问的,japp.dummy始终返回undefined

有没有人知道一个好的IE9解决方案?

谢谢,-Oz

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-19 22:49:18

我想检查小程序是否已加载,因此,我一直在轮询查看小程序中的函数是否存在。

别干那事。相反,让小程序在init()结束时调用JS函数。当小程序准备就绪时,init()就结束了。

IE9在这里失败,而其他浏览器不会。

将IE9替换为“any browser”,您就会遇到与applet/JRE/JS/browser交互相关的问题。不幸的是,这就是applet的本质。:(

票数 3
EN

Stack Overflow用户

发布于 2012-08-21 18:50:07

这样试一试:

代码语言:javascript
复制
<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;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10229220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档