Se você for de domínio cruzado, simplesmente definir o src de volta para o mesmo URL nem sempre acionará uma recarga, mesmo que o hash do local seja alterado.
Deparei com esse problema ao criar manualmente iframes de botão do Twitter, que não eram atualizados quando eu atualizava os URLs.
Os botões do tipo Twitter têm a forma:
.../tweet_button.html#&_version=2&count=none&etc=...
Como o Twitter usa o fragmento de documento para o URL, a alteração do hash / fragmento não recarregou a fonte e os destinos do botão não refletiram meu novo conteúdo carregado com ajax.
Você pode anexar um parâmetro de string de consulta para forçar o recarregamento (por exemplo: "?_=" + Math.random()
mas isso desperdiçará largura de banda, especialmente neste exemplo em que a abordagem do Twitter estava especificamente tentando ativar o cache.
Para recarregar algo que muda apenas com tags de hash, é necessário remover o elemento ou alterá-lo src
, aguarde a saída do encadeamento e atribua-o novamente. Se a página ainda estiver em cache, isso não exigirá uma ocorrência na rede, mas acionará o recarregamento de quadros.
var old = iframe.src;
iframe.src = '';
setTimeout( function () {
iframe.src = old;
}, 0);
Atualização : o uso dessa abordagem cria itens de histórico indesejados. Em vez disso, remova e recrie o elemento iframe toda vez, o que mantém esse botão voltar () funcionando conforme o esperado. Também é bom não ter o cronômetro.