jQuery と Java アプレット
-
09-06-2019 - |
質問
UIの一部(具体的にはマップ)にJavaアプレットを使用しているプロジェクトに取り組んでいますが、アプレットを中心に残りのUIをHTML/JavaScriptで構築し、LiveConnect/NPAPIを介してアプレットと通信しています。 。少し奇妙だと思いますが、セットアップについては議論されていないと仮定しましょう。私は JavaScript フレームワークとして jQuery を使用することを計画し始めましたが、2 つの問題に遭遇しました。
最初のコマンドを発行します。
アプレットを選択しても、アプレットのメソッドにはアクセスできません。
ジャバ:
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 とは対照的です。
var applet = $("applet-id");
alert(applet.foo());
それで...アプレットのメソッドはどこへ行ったのでしょうか?
2 番目を発行します。
Firefox 2 の jQuery とアプレットには既知の問題があります。 http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
それは長期戦ですが、誰か回避策を知っていますか?この問題は修正できないと思われるので、プロトタイプに切り替えることになります。
助けてくれてありがとう!
解決
最初の問題として、試してみてはいかがでしょうか
alert( $("#applet-id")[0].foo() );
2 番目の問題については、次のとおりです。 糸 考えられる回避策とともに。
回避策の引用
// 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