instalar habilitar gratis desactivar como chrome celular activar javascript safari

gratis - habilitar javascript en chrome en windows



Botón de respaldo de Mobile Safari (1)

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() { });