jQuery 和 Java 小程序
-
09-06-2019 - |
题
我正在开发一个项目,其中我们使用 Java 小程序作为 UI 的一部分(特别是地图),但在 HTML/JavaScript 中围绕小程序构建 UI 的其余部分,通过 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());
那么...小程序方法去了哪里?
发出第二个:
Firefox 2 中的 jQuery 和小程序存在一个已知问题: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
这是一个很遥远的事情,但有人知道解决方法吗?我怀疑这个问题无法修复,这意味着要切换到原型。
谢谢您的帮助!
解决方案
对于第一个问题,尝试一下如何
alert( $("#applet-id")[0].foo() );
对于第二个问题,这里是 线 以及一个可能的解决方法。
引用解决方法
// 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(); });
不隶属于 StackOverflow