Usando JavaScript e Greasemonkey para recarregar apenas uma aba 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 abas abertas a cada 5 minutos e não apenas a especificada na instrução @include.

Existe alguma maneira de fazer isso?

    
por Neil Spencer 25.10.2012 / 20:00

2 respostas

8

Esse código tem um bloco de metadados corrupto, 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 dispare para todas as páginas (o comportamento padrão).

Atualização: A aparência de um bloco corrompido pode ser apenas um erro de exibição aqui no SuperUser. Vai investigar um pouco.
Updatier: O bloco corrupto é real, o código do OP é indentado por uma mistura de abas e espaços, o que enganou o editor raw-post da SU, mas não a exibição final .

Além disso, a diretiva @include 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 afetada.

Colocando tudo junto e usando setTimeout da 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);
    
por 25.10.2012 / 20:49
2

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

    
por 25.10.2012 / 20:07