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.

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 y la compatibilidad del navegador móvil?
  • ¿Necesito agregar app.initialize () en todos mis archivos html en un proyecto cordova / phonegap
  • Elija una imagen de la cámara o de la galería mediante un mensaje telefónico
  • cómo mostrar letras árabes correctamente en android usando phonegap?
  • Convierta la aplicación móvil jQuery a apk
  • Cómo ocultar la barra de direcciones del navegador cuando la altura de la página es fija y tiene jQuery desplazamiento interno
  • Parpadeo de las listas desplegables en Android (inversa)
  • Es la navegación en la memoria del teléfono de Android posible utilizando phoengap?
  • Recorta la imagen de la cámara antes de subirla (Phonegap)
  • PhoneGap: caída de la aplicación que toma la imagen del retrato
  • Cómo pasar los argumentos a la función de transacción de base de datos PhoneGap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.