jQuery 和 Java 小程序
Posted
技术标签:
【中文标题】jQuery 和 Java 小程序【英文标题】:jQuery and Java applets 【发布时间】:2010-09-08 14:14:41 【问题描述】:我正在做一个项目,我们将 Java 小程序用于部分 UI(特别是地图),但在 html/javascript 中围绕小程序构建 UI 的其余部分,通过与小程序通信LiveConnect/NPAPI。有点奇怪,我知道,但让我们假设设置不在讨论中。我开始计划使用 jQuery 作为我的 JavaScript 框架,但我遇到了两个问题。
发出第一个:
选择小程序不提供对小程序方法的访问。
Java:
public class MyApplet extends JApplet
// ...
public String foo() return "foo!";
JavaScript:
var applet = $("#applet-id");
alert(applet.foo());
运行上面的 JavaScript 结果
$("#applet-id").foo 不是函数
这与 Prototype 不同,Prototype 可以使用类似的代码:
var applet = $("applet-id");
alert(applet.foo());
那么...applet 方法去哪儿了?
发出第二个:
Firefox 2 中的 jQuery 和小程序存在一个已知问题:http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
这是一个很长的镜头,但有人知道解决方法吗?我怀疑这个问题无法解决,这意味着切换到 Prototype。
感谢您的帮助!
【问题讨论】:
【参考方案1】:第一个问题,试试怎么样
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(); );
【讨论】:
以上是关于jQuery 和 Java 小程序的主要内容,如果未能解决你的问题,请参考以下文章