como - borrar historial safari mac
Prevención de caché en el botón de retroceso en Safari 5 (3)
A partir de safari reciente 5 fue lanzado, y resulta causar algunos problemas para mi sitio web. Tengo un sitio web dinámico con ASP clásico (aunque eso no debería importar mucho) y el sitio tiene un uso creativo de la pila de historial. Por ejemplo, puede estar en una página que enumera productos, luego vaya a detalles sobre un producto y cambie el producto (vista de administrador). Cuando hace clic en guardar en el producto, la información se envía al servidor a través de AJAX y se emite un history.back()
. Esto funciona muy bien en todos los navegadores (incluido safari <= 4), sin embargo, en el safari recién lanzado 5 dejó de funcionar. Parece que cuando haces clic en Safari 5 no actualiza la página, solo la carga desde la memoria caché, lo que significa que no se muestran los cambios realizados en la vista de detalles. ¿Cómo puedo hacer para que esto funcione en Safari 5 también? Este es el código actual que tengo que desactivar el almacenamiento en caché (incluido en la parte superior de cada página):
Dim pStr
pStr = "private, no-cache, no-store, must-revalidate"
Response.AddHeader "pragma","no-cache" ''?
Response.AddHeader "cache-control", pStr ''? Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "cache-control", "post-check=0, pre-check=0" ''? Er ikke sikker på om disse 3 siste er nødvendige.
Response.AddHeader "Expires", "Mon, 26 Jul 1997 05:00:00 GMT" ''?
Response.AddHeader "Last-Modified", Now()
Aquí hay otra forma:
function invalidateBackCache() {
// necessary for Safari: mobile & desktop
}
window.addEventListener("unload", invalidateBackCache, false);
Elegí seguir esta ruta porque agregar HTML (onunload = "") a la etiqueta del cuerpo en .Net implicaba modificar tres archivos en mi caso. Establecer el atributo onunload en jQuery tampoco lo resolvió.
Esto también funciona para el móvil Sarfari (iPad).
Después de algunos problemas y excavaciones encontré una solución, aunque no estoy muy contento con eso. La configuración de onunload=""
en la etiqueta de cuerpo hace que Safari invalide la página y la vuelva a cargar. window.history.back();
.
El controlador de unload
vacía ya no funcionará. 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.
La solución de Kludgish es forzar una recarga cuando la página se carga desde bfcache.
window.onpageshow = function(event) {
if (event.persisted) {
window.location.reload()
}
};
Si está utilizando jQuery, haga lo siguiente:
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
window.location.reload()
}
});