El popup de jQuery.mobile se oculta inmediatamente después de mostrar

Tengo una pequeña aplicación telefónica con jQuery móvil y backbone. Estoy intentando mostrar popup al usuario llamando manualmente el método .popup ().

Todo funciona bien en iOS, pero en Android tengo un problema extraño: popup se muestra por unos momentos y desaparecer.

Aquí el código real:

var PostView = Backbone.View.extend({ events: { 'touchend .add-comment-button': 'addComment' }, addComment: function() { this.$(".comment-popup").popup('open', { history: false }); return false; // Stop bubbling. } }); 

Estoy utilizando history: false porque este popup es parte de subpage. El código se ve muy simple, simplemente no puedo entender por qué puede desaparecer, y por qué esto sucede sólo en dispositivos Android.

Gracias, y lo siento por mi mal inglés.

7 Solutions collect form web for “El popup de jQuery.mobile se oculta inmediatamente después de mostrar”

Pasé horas tratando de solucionar este problema.

Finalmente terminé haciendo las siguientes dos cosas que parecían arreglar el problema.

1 – Utilice el archivo jqm sin comprimir. Ie jquery.mobile.1.2.0.js

2 – Estaba activando el popup mediante programación usando la opción 'tap' – una vez cambiado a la opción 'click' funcionó.

 $('.option').live('click', function() { $('#popup-div').popup('open'); }); 

Pasé horas tratando de solucionar este problema.

Finalmente terminé haciendo las siguientes dos cosas que parecían arreglar el problema.

Este fragmento de código puede ayudarle a ->

 $('#testBtn').on('tap',function(e){ console.log("button clicked"); e.preventDefault(); $('#testPOPUP').popup("open"); }); 

Tenga en cuenta que he utilizado e.perventDefault().

No tenía ganas de cambiar mis eventos .tap () al evento click y no tenía un caso donde pudiera usar preventDefault () así que acabo de añadir un tiempo de espera a la línea emergente ('open'). Mi hoverdelay en jqm se fija a 150 así que fijé este timeout a 600 apenas para estar en el lado seguro. Funciona bien, no se siente lento para el usuario.

Una manera de "arreglarlo" es establecer data-history="false" en la div emergente

Véase también esta pregunta

JQuery móvil popup con history = false autocloses

Tengo exactamente el mismo problema al intentar usar el popup ('abierto') en un androide 2.3 dispositivo (ambos en browser nativo y en firefox) y trabaja muy bien en los hojeadores en otros dispositivos. También estoy utilizando la gestión de eventos de la columna vertebral para abrir mi ventana emergente (se utiliza el evento tap y no aditionnal opciones de popup).

Lo que hice para "corregir" el problema es que he eliminado la gestión de eventos de la columna vertebral para este evento y agregó un oyente en la función de renderizado. En su caso, esto sería algo como esto:

  events: { // 'touchend .add-comment-button': 'addComment' }, render: function() { $(this.el).html(this.template(this.model)); $(this.el).find('.add-comment-button').tap(function(el){ this.addComment(el); return false; }.bind(this)); } 

No tengo ni idea de dónde viene el problema (debe haber alguna incompatibilidad entre backbone y jquery móvil) y por qué solo lo vemos en android pero por el momento con esta solución mi aplicación parece funcionar bien en cualquier dispositivo.

Edit: oops, resulta que en mi caso el problema era que me faltaba "return false;" En la función que se ocupa del acontecimiento. Ahora que lo agregué, funciona correctamente con la gestión de eventos de la columna vertebral. Lamentablemente eso no explica por qué tienes el problema y por qué lo estaba viendo solo en android.

En caso de que ayude a alguien, tuve el mismo problema con Bing Maps, con el método Microsoft.Maps.Events.addHandler(pin, 'click', callback) .

No es particularmente agradable, pero en lugar de eso pushpin._id una identificación en pushpin._id y hice lo siguiente:

 $("#page").on('vclick', function (event) { if (event.target.parentElement.className === "MapPushpinBase") { $("#stopPopup").popup('open'); } }); 

Una opción de fuerza bruta es comprobar si la ventana emergente está oculta y volver a abrirla.

En un bucle, porque el tiempo exacto que el popup se oculta parece ser variado.

 var hidden = $('#' + id + '-popup') .hasClass ('ui-popup-hidden') if (hidden) $('#' + id) .popup ('open') 

Un ejemplo de trabajo: http://jsfiddle.net/ArtemGr/hgbdv9s7/

Otra opción podría ser vincular a popupafterclose :

 var reopener = function() {$('#' + id) .popup ('open')} $('#' + id) .on ('popupafterclose', reopener) $('#' + id) .popup ('open') 

Como aquí: http://jsfiddle.net/ArtemGr/gmpczrdm/

Pero por alguna razón el enlace popupafterclose no se dispara en iPhone 4 la mitad del tiempo.

  • Jquery móvil - keydown keydown en dispositivos móviles
  • Cómo agregar a 'Añadir a pantalla de inicio' emergente para Android móvil
  • JQuery Mobile: el texto de entrada enfocado no respeta el índice z, que aparece por encima de todo lo demás
  • Jqm botón de navegación pulsado al presionar el teclado virtual de Android Tecla 'Siguiente' si el campo de formulario está debajo de la barra de navegación
  • ¿Aplicar Touch Swipe en una sola página, la página que se utiliza para cargar datos dinámicamente?
  • Desarrollo de aplicaciones para Android: java vs. jquery mobile
  • Android Bottom White Stripe al rellenar contenido Webview
  • Etiqueta de audio en el dispositivo Android
  • JQuery indicador de actividad móvil no se muestra en android
  • Problema de compatibilidad de Phonegap-Jquery en Android
  • Phonegap, jQueryMobile y servicio web
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.