Si tiene un dominio cruzado, simplemente establecer el src nuevamente en la misma URL no siempre activará una recarga, incluso si cambia el hash de ubicación.
Encontré este problema al construir manualmente iframes de botones de Twitter, que no se actualizarían cuando actualizara las URL.
Los botones Me gusta de Twitter tienen la forma:
.../tweet_button.html#&_version=2&count=none&etc=...
Como Twitter usa el fragmento de documento para la url, cambiar el hash / fragmento no volvió a cargar la fuente, y los objetivos de los botones no reflejaron mi nuevo contenido cargado de ajax.
Puede agregar un parámetro de cadena de consulta para forzar la recarga (por ejemplo: "?_=" + Math.random()
pero eso desperdiciará el ancho de banda, especialmente en este ejemplo donde el enfoque de Twitter estaba tratando específicamente de habilitar el almacenamiento en caché.
Para volver a cargar algo que solo cambia con etiquetas hash, debe eliminar el elemento o cambiarlo src
, esperar a que salga el hilo y luego asignarlo de nuevo. Si la página todavía está en caché, esto no debería requerir una visita a la red, pero sí activa la recarga del marco.
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
Actualización : el uso de este enfoque crea elementos de historial no deseados. En su lugar, elimine y vuelva a crear el elemento iframe cada vez, lo que mantiene este botón de retroceso () funcionando como se esperaba. También es bueno no tener el temporizador.