9 votes

La fermeture de la nouvelle fenêtre contextuelle de jQuery Mobile entraîne un rafraîchissement inutile de la page

J'utilise la nouvelle popup jqm avec la version 1.2.0 alpha et mon problème est que la page à partir de laquelle j'appelle la popup est rafraîchie inutilement lorsque je ferme la popup en utilisant la touche esc ou en cliquant sur l'écran... Ce rafraîchissement ne se produit que la première fois que je la ferme. Si je rouvre et referme la popup, la page n'est pas rafraîchie...

Il semble que pour une raison ou une autre, le mécanisme de l'histoire du jqm soit perturbé....

Il ne semble pas s'agir d'une fonctionnalité intégrée car cela ne se produit pour aucune popup dans la page de démonstration de jqm.

Une idée pour résoudre ce problème ?

Remerciements

Etienne

23voto

Pablo Points 1696

J'ai eu un problème similaire et, comme je n'avais pas besoin d'utiliser l'historique dans mon cas, je l'ai résolu en désactivant globalement l'historique popup comme suit :

$.mobile.popup.prototype.options.history = false;

5voto

JA_251 Points 428

J'ai trouvé cet article alors que j'avais un problème similaire sur IE11 avec jQuery Mobile 1.4.5

J'ai découvert que je pouvais empêcher le "rechargement" lors de la fermeture de la fenêtre contextuelle en déclarant la fenêtre contextuelle avec l'attribut data-history="false" dans mon code HTML.

Ex :

..

3voto

Kurt Points 788

Conformément à mon commentaire, voici une solution temporaire pour résoudre le problème. Il suffit de se lier de manière appropriée à l'événement de navigation et d'appeler preventDefault. Cela empêchera le rechargement de la page. J'ai fini par me lier au popupafterclose, uniquement lorsqu'il a été ouvert :

  $('.my-popup-selector').on('popupafteropen', function () {
      $(this).one('popupafterclose', function () {
          $(window).one('navigate.popup', function (e) {
              e.preventDefault();
          });
      });
  });

0voto

Nanda Points 1

J'ai eu un problème similaire et je l'ai résolu en utilisant history: false :

$("#selector").popup({ transition: 'slidedown', history: false, overlay: true });
$("#selector").popup("open");

0voto

ofskyMohsen Points 183

Ajouter data-history="false" à la div popup. Ainsi, lorsque la popup se ferme, elle n'est pas redirigée vers une autre page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X