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.

  • Convierta la aplicación móvil jQuery a apk
  • Cómo almacenar los valores de cookies en un dispositivo Android con Phonegap y jQuery Mobile?
  • Problema de bajo rendimiento de Phonegap
  • Ejecutar aplicación Android phonegap en segundo plano
  • Cómo ocultar la barra de direcciones del navegador cuando la altura de la página es fija y tiene jQuery desplazamiento interno
  • Deslice con jQuery Mobile 1.2, PhoneGap 2.1 y Android 4.0.4 no funcionan correctamente
  • Problema - blockWebkitDraw lockedfalse
  • Usar jQuery móvil sin conexión
  • Pantalla parpadeante de jQuery Mobile durante las transiciones
  • PhoneGap: caída de la aplicación que toma la imagen del retrato
  • Cómo deshabilitar el botón de retroceso del teléfono en Android con Jquerymobile, PhoneGap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.