Usi JavaScript e Greasemonkey per ricaricare solo una scheda in Firefox?


8

Sono nuovo di Greasemonkey e javascript ma ho trovato lo script seguente per ricaricare una pagina ogni 5 minuti.

// ==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);

Funziona ma ricarica tutte le schede aperte ogni 5 minuti e non solo quella specificata nell'istruzione @include.

C'è un modo per farlo?



Scusate, era solo un errore di battitura
Neil Spencer,

Risposte:


8

Quel codice ha un blocco di metadati corrotto , gli spazi sono fondamentali per quel blocco e spazi extra all'inizio di una riga possono romperlo, causando l'attivazione dello script per tutte le pagine (comportamento predefinito).

Aggiornamento: L'aspetto di un blocco corrotto potrebbe essere solo un bug di visualizzazione qui su SuperUser. Investigherò tra poco.
Aggiornamento: il blocco corrotto è reale, il codice dell'OP è indentato da una combinazione di schede e spazi, che ha ingannato l'editor di posta grezza di SU, ma non la visualizzazione finale.

Inoltre, la @includedirettiva specifica una pagina Web che non esiste. ww., contro www.. Quella linea dovrebbe essere:

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

O forse:

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

se desideri qualcosa di più della semplice home page effettuata.

Mettendo tutto insieme e usando setTimeoutnel modo raccomandato (Evitare l'uso di "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);

1
Fantastico - molte grazie per questo. Lo script ora funziona davvero solo sulla pagina che desidero piuttosto che su tutte le pagine.
Neil Spencer,

2

Non sono sicuro di come eseguire questa operazione in Javascript, ma Firefox ha un componente aggiuntivo chiamato ReloadEvery . Installalo, riavvia FF, quindi fai clic con il pulsante destro del mouse sulla pagina e scegli ReloadEvery e un'ora.


1
Sì, ma ogni volta che apro Firefox e vado sul sito Web devo attivare ReloadEvery. Quello che vorrei è che la ricarica fosse attivata automaticamente semplicemente andando alla pagina. Il javascript sopra fa questo, ma ricarica anche tutte le altre schede aperte.
Neil Spencer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.