jQuery Mobile 1.3.1 Erreur non capturée: impossible d’appeler des méthodes sur une fenêtre contextuelle avant l’initialisation; a tenté d’appeler la méthode ‘open’

J’ai une boîte de dialog de connexion simple que je lance lors du chargement du document:

Login

$(document).ready(function(){ $("#signupPopup").popup('open'); });

C’est un jsFiddle de l’exemple . Maintenant, lors d’un chargement normal, la fenêtre contextuelle s’ouvre sans problème, puis elle met à jour le hachage de l’url vers http://myurl.com/#&ui-state=dialog et si je clique sur recharger avec ce hachage dans l’URL, j’obtiens l’erreur js: Uncaught Error: cannot call methods on popup prior to initialization; attempted to call method 'open' Uncaught Error: cannot call methods on popup prior to initialization; attempted to call method 'open' .

J’ai essayé de reproduire le même comportement sur http://view.jquerymobile.com/master/demos/widgets/popup/

en ajoutant le a au lien comme ceci:

http://view.jquerymobile.com/master/demos/widgets/popup/#&ui-state=dialog mais je ne peux pas reproduire la même erreur. Alors, je me demande si quelqu’un a rencontré cette erreur et comment il / elle l’a résolue? Btw, j’ai vérifié tous les 20 meilleurs liens de Google sur cette erreur, mais aucun d’entre eux n’a aidé, y compris quelques-uns de SO. En outre, il convient de noter que je n’obtiens pas cette erreur si j’utilise jQuery Mobile 1.2 et jQuery 1.7.1.

J’utilise jQuery Mobile 1.3.1 et jQuery 1.9.1.

Vous ne pouvez pas avoir le popup HTML dans une “page” elemenet.

 

J’ai constaté que lorsque je le mettais accidentellement en dehors de la page, je devais d’abord appeler .popup () pour l’initialiser. Toutefois, les boutons ou les autres éléments de la fenêtre contextuelle ne sont jamais initialisés avec cette approche. Le correctif racine est de mettre le popup dans l’élément de page.

$(document).ready() ne doit pas être utilisé dans jQuery Mobile. Utilisez plutôt pageinit

http://jquerymobile.com/demos/1.2.1/docs/api/events.html

 $(document).bind('pageinit', function() { $("#signupPopup").popup('open'); }); 

Nikola,

essayez d’initialiser le popup avant d’appeler la méthode open.

  $("#signupPopup").popup(); $("#signupPopup").popup('open');