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.