J'ai une application Phonegap, en utilisant jQuery et jQuery Mobile.Fonction JS déclenchée sans être appelée
Dans certaines pages, j'ai lié une fonction à un événement tap, mais la fonction est déclenchée lors du chargement de la page. Après avoir débogué un peu (en utilisant arguments.callee.caller.caller.toString()
), j'ai découvert que, pour une raison folle, un événement click est déclenché dans ce bouton juste au moment du chargement de la page. Lorsque j'ai changé la classe du pied de page, le problème avait disparu (aussi mon style), puis j'ai changé les références de classe dans mon fichier CSS pour correspondre à la nouvelle classe de pied de page, le problème est revenu. C'est très étrange, peut-être qu'il a quelque chose avec mon CSS.
Il n'y a aucune autre référence à "footer_body"
dans mon projet.
Si je définis les appels de fonction directement sur le HTML (quelque chose comme <span onClick="javascript:obj.leftMethod()">
), j'ai le même comportement.
Bien sûr, c'est un problème de Phonegap/Android, comme cela ne se produit pas dans un navigateur PC (en plus je dois commenter beaucoup de code qui ne fonctionne que dans les mobiles).
Voici le code:
HTML:
<div class="footer_body">
<span class="left"><span>Text 1</span></span>
<span class="right"><span>Text 2</span></span>
</div>
JS/jQuery:
function PageClass() {
...
// called when the page is loaded
this.init = function() {
$(".footer_body", "#page_2").find(".left").unbind("tap").bind("tap", function() {
that.leftMethod();
});
$(".footer_body", "#page_2").find(".right").unbind("tap").bind("tap", function() {
that.rightMethod();
});
// that is a reference to "this" of the class
}
}
Mettez 'debugger; 'première ligne dans vos fonctions' leftMethod()/rightMethod() '. Ouvrir dans Chrome et quand il se charge, appuyez sur Ctrl + Maj + I il apparaîtra un inspecteur avec un onglet Scripts en pause où vous obtenez l'ensemble stacktrace (appelant, appelé, événements, etc) –
@ GRIGORE-TURBODISEL, I ' m en utilisant Phonegap. –
Peu importe. Essayez-le quand même. –