gratis - habilitar javascript en chrome en windows
Botón de respaldo de Mobile Safari (1)
Esta pregunta ya tiene una respuesta aquí:
El problema que he encontrado es muy similar a esta pregunta , excepto que Safari en los escritorios parece haber resuelto el problema. Básicamente, el problema es este: cuando un cliente está navegando en un safari móvil y la página ejecuta una función de JavaScript en pagea.html, navegue a pageb.html, luego presione el botón Atrás para volver a pagea.html, la función javascript no se ejecutará cuando el cliente presione el botón Atrás para regresar a pagea.html. Se saltará la llamada javascript.
He intentado con las soluciones mencionadas en el enlace anterior, pero parece que nada funciona para Safari móvil. ¿Alguien más ha encontrado este error? ¿Cómo lo manejaste?
Esto es causado por la memoria caché back-forward . Se supone que guarda el estado completo de la página cuando el usuario navega fuera. Cuando el usuario navega hacia atrás, la página del botón Atrás se puede cargar desde la memoria caché muy rápidamente. Esto es diferente del caché normal que solo almacena en caché el código HTML.
Cuando se carga la página para el evento onload
bfcache no se activará. En su lugar, puede verificar la propiedad persisted
del evento onpageshow
. Se establece en falso en la carga de la página inicial. Cuando la página se carga desde bfcache, se establece en verdadero.
window.onpageshow = function(event) {
if (event.persisted) {
alert("From back / forward cache.");
}
};
Por alguna razón, jQuery no tiene esta propiedad en el evento. Aunque puedes encontrarlo desde el evento original.
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
alert("From back / forward cache.");
}
});
La solución rápida a estos problemas es volver a cargar la página cuando se presiona el botón Atrás. Sin embargo, esto anula cualquier efecto positivo que la caché de atrás / adelante daría.
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
Como nota al margen, puede ver muchas páginas que ofrecen el uso del controlador onunload
vacío como solución. Esto no ha funcionado desde iOS5.
$(window).bind("unload", function() { });