11
votes

Utilisez jQuery à l'intérieur de GWT JSNI

Je ne suis pas en mesure d'utiliser xxx

de l'intérieur de la fonction GWT JSNI. J'ai essayé ce xxx

mais cela ne fonctionne pas non plus. Je sens que je manque de la syntaxe ici. Quelqu'un pourrait-il aider


1 commentaires

Quel est le code complet de votre méthode JSNI (type de retour, paramètres, etc.)? Chargez-vous jQuery.js dans votre index.html? Avez-vous une erreur lorsque votre code est exécuté?


3 Réponses :


0
votes

Je suppose que vous avez ajouté la bibliothèque jQuery dans votre page d'hôte.

La syntaxe correcte est xxx

et en supposant que vous venez de commencer Utilisation de jQuery dans gwt .

Je suggère fortement une bibliothèque tierce partie de poids léger

gwtquery


9 commentaires

Merci pour l'info. J'essaie de retourner la valeur de la fonction JSNI comme celle-ci. Mais je ne suis pas capable de l'obtenir. Code Public Static Native Int getiframeTop (Profilateur de chaîne) / * - {$ wnd. $ (fonction () {retour $ wnd. $ ("#" + profilid) .Offset (). TOP}). ; } - * /; code


Mettez à jour la question avec votre code complet et êtes-vous sûr que votre contrôle entrant à l'intérieur JNSI ?? Vérifier en mettant une alerte en première ligne


@Baddshah erreur: Gwtquery n'est pas une enveloppe de jQuery, Gwtquery est une bibliothèque entièrement écrite dans GWT. Vous l'avez lié à la GWT-JQuery qui devrait être une enveloppe basée sur leurs informations de la page, car elles ne publient pas leur code (à moins que vous ne déconniez pas le pot à la main)


@Baddshah: Votre code JSNI ne fait rien d'être à l'écart d'une erreur. Offset (). Top dans JQuery est une propriété, je suppose donc que l'utilisateur souhaite obtenir cette valeur, en fonction du ProfileID passé. Voir ma réponse.


@Manolo haaaah ... monsieur, je veux me gifler pour mettre le mauvais lien.Ils gQuery pas gwt jQuery.


Aucun problème @baadshah, cela a fonctionné parce que je me suis rendu compte de l'existence de ce projet.


@Manolo Btw, qui obtiennent aussi jQuery un enfant de jQuery ?? ou un autre?


Non, ce n'est pas lié à GwtQuery du tout. Voir la dernière ligne de la page principale de leur site.


Rofl..that linge pointe vers GwTquery :) De toute façon, merci pour la connaissance.



13
votes

Trois solutions pour cette question:

1- Votre code JSNI a l'air bien, sauf que vous devez la joindre à la fonction native correspondante et renvoyer un double (ou tout autre type de numéro si vous voulez que GWT effectue le casting) . P>

int top = DOM.getElementById(profileId).getOffsetTop();


2 commentaires

JS n'a qu'un seul type pour les chiffres, de sorte que la manière naturelle de renvoyer un nombre d'un JSNI utilise des doubles, sinon GWT doit faire face à la coulée (bien sûr, vous pouvez modifier la signature de la méthode et renvoyer un Int et laisser GWT faire le casting). . GQuery retourne un int parce que c'est ce que geoffsettop () retourne dans GWT et que nous déléguons dessus pour calculer le top des éléments "


Est-ce une erreur de syntaxe sur le bloc entrée ? Vous semblez ne pas fermer la fonction de fonction.



1
votes

Un moyen facile est avec un eval humble.

eval("$('#'" + profileId + ").offset().top" );


1 commentaires

Un inconvénient de cette approche est que vous n'obtenez aucune analyse IDE dans le contenu de la chaîne que vous envoyez à EVAL. De cette façon, si vous avez une faute de frappe quelque part ou appelez une propriété non définie, vous ne saurez pas avant l'exécution.