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?

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.

  • ¿Cómo manejas los registros de antememoria de caché en la aplicación para móviles
  • ¿Creación de aplicaciones iOS y Android desde un sencillo html5 + javascript?
  • Cómo eliminar el retraso de onclick y mantener el desplazamiento rápido en la aplicación web móvil
  • ¿Cómo generar enlace waze meetup con fallback web?
  • JQuery Mobile nativa no trabaja en droid
  • ¿Qué tan bien el conocimiento de J2ME se generaliza a otras plataformas móviles?
  • Solicitar opción de sitio de escritorio en dispositivos móviles
  • Funcionalidad de las pantallas táctiles y la entrada del usuario
  • ¿Es el zoom en el navegador lo mismo que el zoom en un dispositivo móvil?
  • ¿Cómo puedo cambiar el color de OverScroll en Android 2.3.1?
  • Comunicación directa entre dos dispositivos móviles
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.