Question

Je travaille sur un projet dans lequel nous utilisons une applet Java pour une partie de l'interface utilisateur (une carte en particulier), mais construisons le reste de l'interface utilisateur autour de l'applet en HTML/JavaScript, en communiquant avec l'applet via LiveConnect/NPAPI. .Un peu bizarre, je sais, mais supposons que la configuration ne soit pas en discussion.J'ai commencé par planifier l'utilisation de jQuery comme framework JavaScript, mais j'ai rencontré deux problèmes.

Émettez le premier :

La sélection de l'applet ne donne pas accès aux méthodes de l'applet.

Java:

public class MyApplet extends JApplet {
  // ...
  public String foo() { return "foo!"; }
}

Javascript :

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

L'exécution du JavaScript ci-dessus entraîne

$("#applet-id").foo is not a function

Cela contraste avec Prototype, où le code analogue fonctionne :

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

Alors... où sont passées les méthodes des applet ?

Émettez le deuxième :

Il existe un problème connu avec jQuery et les applets dans Firefox 2 : http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm

C'est long, mais quelqu'un connaît-il une solution de contournement ?Je soupçonne que ce problème ne peut pas être résolu, ce qui nécessitera de passer au prototype.

Merci pour l'aide!

Était-ce utile?

La solution

Pour le premier numéro, que diriez-vous d'essayer

alert( $("#applet-id")[0].foo() );

Pour le deuxième numéro, voici un fil avec une solution de contournement possible.

Citant la solution de contournement

// 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();
});

changez ce code en :

// Window isn't included so as not to unbind existing unload events
jQuery(window).bind("unload",
function() {
        jQuery("*:not('applet, object')").add(document).unbind();
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top