Recarregar página automaticamente no Chrome sem plug-in

12

Usando o plug-in TabMixPlus para Firefox ou Chrome, posso clicar com o botão direito do mouse em uma página e escolher "recarregar a cada ..." e escolher um intervalo.

Prefiro não instalar um plug-in, a menos que seja realmente necessário, e sei que você pode digitar coisas especiais na barra de endereços do Chrome.

Isso me faz pensar que algo assim digitado diretamente no endereço pode funcionar:

javascript:setInterval(window.location.reload(), 2000); //2 secs`

Ainda não o consegui, mas ainda não quero descartá-lo como uma possibilidade.

Isso é possível?

Jon
fonte
Por que você é contra um plugin? Se você está preocupado, basta escrever seu próprio plugin que faz exatamente o que você deseja.
Ramhound
Eu não sou contra plugins, desculpe se é assim. Eu só gostaria de aprender um pouco mais sobre os recursos da barra de endereços do Chrome :)
jon
Por que você não tentou digitar isso na barra de endereços?
Toby Allen
Eu tenho, vejai haven't managed it yet
jon
O problema é que, quando você liga location.reload()e a página é recarregada, no que diz respeito ao Chrome, é basicamente como carregar uma nova página e o contexto é novo (as coisas que você digitou anteriormente são perdidas). Portanto, você precisa persistir de alguma forma com seu código e ter a página igual, e é por isso que a solução iframe da resposta.
ShreevatsaR

Respostas:

13

Após 6 anos, tenho uma solução para isso!

A resposta é inspirada nas outras respostas aqui.

A resposta de Edub não funcionou para mim, recarregou a página várias vezes e não observou setIntervalo parâmetro de duração. Não entendo por que a resposta de Edub não funciona como o esperado.

Isso funciona para mim no Chrome 67:

javascript:document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\"><\/iframe>";reloadTimer = setInterval(function(){ document.getElementById("testFrame").src=document.getElementById("testFrame").src },10000)

Versão formatada:

document.getElementsByTagName("body")[0].innerHTML = 
"<iframe id=\"testFrame\" 
        src=\"" + window.location.toString() + "\" 
      style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\">
<\/iframe>";
reloadTimer = setInterval(
    function(){ 
        document.getElementById("testFrame").src=document.getElementById("testFrame").src
    },
    10000
)

Isso funciona substituindo o corpo do documento atual por um iframe apontando para o local atual da janela.

Em seguida, é feita uma chamada para setInterval, que faz com que a página seja recarregada em um timer.

Isso funciona bem como um marcador. A função complementar de setInterval também pode ser chamada por marcador:javascript:clearTimer(reloadTimer)

Notas:

  • Alguns sites detectam que estão sendo acessados ​​via iframe e tentam impedir o acesso (empilhar sites por exemplo!)

  • Os navegadores retiram o prefixo javascript:ao colar na barra de endereços, para que seja digitado manualmente. No entanto, javascript:não é retirado se inserido via marcador.

Jon
fonte
11

Você pode fazer isso por meio das Ferramentas do desenvolvedor do Chrome usando a combinação de teclas ctrl+shift+j. Carregue a página desejada, por exemplo: http://www.w3schools.com/jsref/dom_obj_frame.asp e pressione ctrl+shift+jpara abrir as ferramentas do desenvolvedor. Clique com o botão direito do mouse na tag body e selecione edit como html, substitua o conteúdo interno (deixando a tag e as tags de fechamento intactas) pelo seguinte:

<iframe id="testFrame" src="http://www.w3schools.com/jsref/dom_obj_frame.asp" style="position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;" onload="setInterval(document.getElementById('testFrame').contentWindow.location.reload(), 10000);"></iframe>

para interromper a edição como html, você pode clicar escou clicar em uma das tags fora daquela que está editando. A página deve começar a ser recarregada a cada 10 segundos. Você pode fechar as ferramentas dos desenvolvedores, se quiser, e continuará atualizando, sem necessidade de plug-in :)

Justin Buser
fonte
Obrigado Justin, isso funciona, então eu votei novamente, mas não é a resposta que eu estava procurando, então deixarei a pergunta em aberto :) :) Além disso, F12 não?
21413 jon
3

Tomando a solução de Justin Buser um passo adiante, levei-me a:

document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\" onload=\"setInterval(document.getElementById(\'testFrame\').contentWindow.location.reload(), 10000);\"><\/iframe>"

A idéia de incorporar o site em um iframe para poder recarregá-lo funciona bem (eu acho). Acabei de escrever um código para obter o elemento corporal e substituir o innerhtml por um Iframe no URL atual.

Dessa forma, é possível adicionar um código JavaScript aos favoritos e acioná-lo em qualquer site para recarregá-lo. Espero que ajude.

Edub
fonte