Se sei interdominio, semplicemente reimpostando lo src sullo stesso url non si attiverà sempre una ricarica, anche se l'hash della posizione cambia.
Ho riscontrato questo problema durante la costruzione manuale degli iframe dei pulsanti di Twitter, che non si aggiornano quando ho aggiornato gli URL.
I pulsanti tipo Twitter hanno la forma:
.../tweet_button.html#&_version=2&count=none&etc=...
Poiché Twitter utilizza il frammento di documento per l'URL, la modifica dell'hash / del frammento non ha ricaricato l'origine e le destinazioni dei pulsanti non riflettevano il mio nuovo contenuto caricato con ajax.
È possibile aggiungere un parametro della stringa di query per forzare la ricarica (ad esempio: "?_=" + Math.random()
ma ciò sprecherà la larghezza di banda, specialmente in questo esempio in cui l'approccio di Twitter stava specificamente cercando di abilitare la memorizzazione nella cache.
Per ricaricare qualcosa che cambia solo con i tag hash, è necessario rimuovere l'elemento o modificare l'elemento src
, attendere che il thread termini, quindi assegnarlo nuovamente. Se la pagina è ancora memorizzata nella cache, ciò non dovrebbe richiedere un hit di rete, ma attiva il ricaricamento del frame.
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
Aggiornamento : l'utilizzo di questo approccio crea elementi di cronologia indesiderati. Invece, rimuovi e ricrea ogni volta l'elemento iframe, che mantiene questo pulsante back () funzionante come previsto. Bello anche non avere il timer.