Estoy tratando de crear una clase de diálogo de JavaScript genérica basada en JQuery para crear div-popups centradas en la pantalla. Lograr esto en todos los buscadores comunes era simple vainilla.Problema con meta viewport y Android
Para plataformas móviles, surge la cuestión de la ventana gráfica; la diferencia de la ventana gráfica visible (que es su "ventana de visualización" actual del sitio como la ve, la amplió o no) y la ventana gráfica de presentación (las dimensiones de la página subyacente, o en otras palabras, la ventana CSS).
para Iphone, que han sido capaces de utilizar la propiedad DOM window.innerWidth y window.innerHeight para ajustar el centrado de la escala, y pageXOffset/pageYOffset ajustar para la expansión, con:
// Get dialog width/height
var dx = $("#dialog").width();
var dy = $("#dialog").height();
// Get window (layout viewport) width/height
var winW = $(window).width();
var winH = $(window).height();
if (window.innerWidth!=winW) {
// Zoomed in or users browser window width is smaller than layout width
var x = window.pageXOffset+(window.innerWidth-dx)/2;
} else {
// Not zoomed in
var x = window.pageXOffset+(winW-dx)/2;
}
if (window.innerHeight!=winH) {
// Zoomed in or users browser window height is smaller than layout height
var y = window.pageYOffset+(window.innerHeight-dy)/2;
} else {
// Not zoomed in
var y = window.pageYOffset+(winH-dy)/2;
}
que entonces coloque mi diálogo configurando izquierda/arriba a xey respectivamente. Esto funciona bien en la mayoría de los navegadores e incluso en el Iphone, pero no funciona en las plataformas Android.
Después de investigar un poco con Google, parece que Android tiene bastantes problemas con las propiedades window.innerWidth y window.innerHeight (ver f eg http://www.quirksmode.org/mobile/viewports2.html, buscar "Medir la ventana visible").
Una opción sería usar el agente de uso para identificar los navegadores de Android y colocar siempre el cuadro de diálogo en window.pageXOffset/window.pageYOffset, que siempre los ubicaría arriba/izquierda en la ventana visible. Sin embargo, esta es una mala opción por muchas razones, entre otras cosas porque se ve mal cuando se aleja.
¿Alguien sabe de un método para calcular la ventana gráfica visible en Android? ¿O alguien ha encontrado una solución para esto?
El diálogo es una respuesta a un evento de usuario como un evento de ratón? – Prusse
Sí, esa es la idea general. –
Puede intentar procesar event.pageX/Y y event.clientX/Y junto con la detección de algún objeto. – Prusse