Disparar document.ready no botão Voltar IE11
-
21-12-2019 - |
Pergunta
Eu tenho uma página com um formulário de pesquisa.Quando você visita a página pela primeira vez, tenho um disparo jQuery(document).ready():
jQuery(document).ready(
function () {
jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
}
);
Agora, quando você envia o formulário e clica no botão Voltar, o document.ready não é acionado, e é necessário.
O problema original estava apenas no Firefox, mas depois de algumas pesquisas descobri que adicionar um evento unload ao corpo resolveu isso:
jQuery(window).unload(function(){});
Disseram-me que não funciona no IE11.
Alguém tem alguma dica para fazer com que a função document.ready seja acionada no IE11?
Solução
Então, eu tropecei esta resposta na minha busca, enterrado no final do post.
Eu tentei e funcionou:
// break the bfcache (ie11 and all others likely)
jQuery(window).focus(
function() {
jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
}
);
Deixei o código original intacto, porque no meu caso estou apenas definindo um carimbo de data/hora unix e está tudo bem se isso acontecer várias vezes.
Resposta completa:
jQuery(document).ready(
function () {
jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
}
);
jQuery(window).unload(function(){});
jQuery(window).focus(
function() {
jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
}
);
Outras dicas
Para qualquer outra pessoa que fixa nesse problema, aqui é um artigo do MSDN documentando como parar o comportamento de cache para trás / avançado do IE11: https://msdn.microsoft.com/library/dn265017 (v= vs.85) .aspx .De acordo com isso, adicionar um manipulador de eventos de beforload para ele.Isso também funciona no Firefox: https://developer.mozilla.org/en-us/docs/using_firefox_1.5_caching .