Javascript android window.onorientationchange se dispara continuamente
Estoy tratando de detectar cambios de orientación en dispositivos móviles y activar una función una vez que se ha completado una orientación, pero el código dentro de la función está disparando continuamente en Android y no estoy seguro de por qué. Aquí está mi código:
var supportsOrientationChange = "onorientationchange" in window; var orientationEvent = supportsOrientationChange ? "orientationchange" : "resize"; window.addEventListener(orientationEvent, function() { alert ('orientation changed'); }, false );
¿Alguien sabe cómo escribir esto para que sólo se desencadena una vez, después de que el cambio de orientación se ha completado?
- ¿Reproduce vídeos de vimeo usando el reproductor nativo de android?
- ¿Por qué los navegadores móviles cargan mi página completamente ampliada?
- ¿Cómo se simula la memoria baja en el emulador de Android?
- Bootstrap 2.3 Problemas de menú plegables en Android Mobile
- Javascript máximo altura de la vista tras la orientación cambiar Android y iOS
- Habilitar registro DEBUG en Blu-R1 HD (teléfono Amazon)
- Desafíos al realizar el desarrollo de aplicaciones móviles con Python
- JQuery evento de clic no funciona en los navegadores móviles
- ¿Cómo cambiar el tamaño de pantalla de PhoneGap?
- ¿Utiliza simultáneamente wifi y la interfaz 3G en Android?
- Android ListView: obtenga una distancia de desplazamiento
- ¿Cómo obtienes MCC y MNC del teléfono en Android?
- Android: error de transferencia: sistema de archivos de sólo lectura
He utilizado un trabajo de alrededor de esto en mi aplicación. He añadido un detector de eventos para orientationchange y luego establecer un tiempo de espera para el cambio de orientación podría ocurrir y podría obtener un nuevo valor de ancho que en realidad refleja el ancho después de la orientación cambio.
var device_width = 0; $(document).ready(function () { var oc_timer; $(window).bind('orientationchange', function () { clearTimeout(oc_timer); oc_timer = setTimeout(function () { device_width = $(window).width(); }, 500); }); });
No estoy seguro de que esto va a resolver su problema de disparo continuo de la función, pero esta es una solución que encontré para trabajar.
He encontrado una manera de hacer esto en caso de que otros todavía están teniendo el mismo problema, echa un vistazo:
function onOrientationChange() { if (typeof(this.orientation) === "undefined"){ if (window.orientation == -90 || window.orientation == 90) { this.orientation = "landscape"; } else { this.orientation = "portrait"; } // alert ("in 1"); // you code here for change } if ((window.orientation == -90 || window.orientation == 90) && (this.orientation == "portrait")) { this.orientation = "landscape"; // alert ("in 2"); // you code here for change } if ((window.orientation == 0 || window.orientation == 180) && (this.orientation == "landscape")) { this.orientation = "portrait"; // alert ("in 3"); // you code here for change } }
Solución simple para aplicaciones menos detalladas
//bind orientation change event $(window).bind("orientationchange", orientationChange); //later, function orientationChange(){ //whatever needs to happen when it changes. alert("changed"); }
También puede usar $ .on () en su lugar si necesita pasar información.
En los navegadores que no lo admiten, el evento no se dispara. A continuación, podría escribir un script de detección personalizado como un fallback para disparar el evento si la orientación cambia en un dispositivo que no admite el cambio onorientation.