Usando JavaScript e Greasemonkey para recarregar apenas uma guia no Firefox?

8

Eu sou novo no Greasemonkey e no javascript, mas encontrei o script abaixo para recarregar uma página a cada 5 minutos.

// ==UserScript==
// @name        Auto Reload Protopage
// @namespace   http://blog.monstuff.com/archives/cat_greasemonkey.html
// @description Reload pages every 5 minutes
// @include     http://ww.bbc.co.uk
    // @grant               none
// ==/UserScript==

// based on code by Julien Couvreur
// and included here with his gracious permission

var numMinutes = 5;
window.setTimeout("document.location.reload();", numMinutes*60*1000);

Isso funciona, mas recarrega todas as guias abertas a cada 5 minutos e não apenas a especificada na instrução @include.

Existe alguma maneira de fazer isso?

Neil Spencer
fonte
http://ww.bbc.co.uk não existe?
21412 Laoujin
Desculpe - que era apenas um erro de digitação
Neil Spencer

Respostas:

8

Esse código possui um bloco de metadados corrompido , os espaços são críticos para esse bloco e os espaços extras no início de uma linha podem quebrá-lo - fazendo com que o script seja acionado para todas as páginas (o comportamento padrão).

Atualização: A aparência de um bloco corrompido pode ser apenas um bug de exibição aqui no SuperUser. Irá investigar um pouco.
Atualizador: O bloco corrompido é real, o código do OP é recuado por uma mistura de guias e espaços, que enganaram o editor de postagem não processada do SU, mas não a exibição final.

Além disso, a @includediretiva está especificando uma página da web que não existe. ww., versus www.. Essa linha deve ser:

// @include     http://www.bbc.co.uk/

Ou possivelmente:

// @include     http://www.bbc.co.uk/*

se você quiser mais do que apenas a página inicial efetuada.

Reunindo tudo e usando setTimeoutda maneira recomendada (evite o uso de "auto eval ()"):

// ==UserScript==
// @name        Auto Reload Protopage
// @namespace   http://blog.monstuff.com/archives/cat_greasemonkey.html
// @description Reload pages every 5 minutes
// @include     http://www.bbc.co.uk/
// @grant       none
// ==/UserScript==

// based on code by Julien Couvreur
// and included here with his gracious permission

var numMinutes = 5;
setTimeout (location.reload, numMinutes*60*1000);
Brock Adams
fonte
11
Brilhante - muito obrigado por isso. Agora, o script está operando apenas na página que eu quero, e não em todas as páginas.
Neil Spencer
2

Não sei como fazer isso em Javascript, mas o Firefox tem um complemento chamado ReloadEvery . Instale-o, reinicie o FF e clique com o botão direito do mouse na página e escolha ReloadEvery e uma vez.

David
fonte
11
Sim - mas sempre que abro o Firefox e vou ao site, preciso ativar o ReloadEvery. O que eu gostaria é que a recarga seja ativada automaticamente apenas acessando a página. O javascript acima faz isso, mas também recarrega todas as outras guias que estão abertas.
Neil Spencer #