10

私は、UI の一部 (具体的にはマップ) に Java アプレットを使用しているプロジェクトに取り組んでいますが、HTML/JavaScript でアプレットの周りに残りの UI を構築し、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 は関数ではありません

これは、類似のコードが機能するプロトタイプとは対照的です。

var applet = $("applet-id");
alert(applet.foo());

では...アプレットのメソッドはどこに行ったのでしょうか?

2 番目を発行します。

Firefox 2 の jQuery とアプレットには既知の問題があります: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm

それはロングショットですが、誰かが回避策を知っていますか? この問題は修正できないと思われます。つまり、Prototype に切り替えることになります。

助けてくれてありがとう!

4

1 に答える 1

12

初号、やってみてはいかがでしょうか

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();
});
于 2008-09-11T16:31:39.260 に答える