質問

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();
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top