我正在开发一个项目,我们在部分UI(特别是地图)中使用Java applet,但是在HTML / JavaScript中围绕applet构建其余的UI,通过applet与applet进行通信LiveConnect的/ NPAPI。我知道,有点奇怪,但我们假设设置没有讨论。我开始计划使用jQuery作为我的JavaScript框架,但我遇到了两个问题。
发出第一个:
选择小程序不能访问小程序的方法。
爪哇:
public class MyApplet extends JApplet {
// ...
public String foo() { return "foo!"; }
}
JavaScript的:
var applet = $("#applet-id");
alert(applet.foo());
运行上述JavaScript结果
$("#applet-id").foo is not a function
这与Prototype相反,Prototype的类似代码确实有效:
var applet = $("applet-id");
alert(applet.foo());
那么...... applet方法在哪里?
发出第二个:
Firefox 2中的jQuery和applet存在一个已知问题:http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
这是一个很长的镜头,但有人知道一个解决方法吗?我怀疑这个问题不可修复,这意味着要切换到Prototype。
感谢您的帮助!
答案 0 :(得分:12)
对于第一个问题,如何尝试
alert( $("#applet-id")[0].foo() );
对于第二个问题,这里有thread,可能有解决方法。
引用解决方法
// Prevent memory leaks in IE // And prevent errors on refresh with events like mouseover in other browsers // Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*").add(document).unbind(); });
将该代码更改为:
// Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*:not('applet, object')").add(document).unbind(); });