Używasz JavaScript i Greasemonkey, aby ponownie załadować tylko jedną kartę w Firefoksie?

8

Jestem nowy w Greasemonkey i javascript, ale znalazłem poniższy skrypt, aby przeładowywać stronę co 5 minut.

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

Działa to, ale co 5 minut ponownie ładuje wszystkie otwarte karty, a nie tylko tę określoną w instrukcji @include.

Czy jest na to jakiś sposób?

Neil Spencer
źródło
http://ww.bbc.co.uk nie istnieje?
Laoujin
Przepraszam - to była tylko literówka
Neil Spencer

Odpowiedzi:

8

Ten kod ma uszkodzony blok metadanych , spacje są krytyczne dla tego bloku, a dodatkowe spacje na początku linii mogą go złamać - powodując uruchomienie skryptu dla wszystkich stron (zachowanie domyślne).

Aktualizacja: Pojawienie się uszkodzonego bloku może być tylko błędem wyświetlacza w SuperUser. Za chwilę to zbadam.
Updatier: Zepsuty blok jest prawdziwy, kod OP jest wcięty przez kombinację tabulatorów i spacji, które oszukały edytor postów SU, ale nie końcowy ekran.

Ponadto @includedyrektywa określa stronę internetową, która nie istnieje. ww., w porównaniu z www.. Ta linia powinna być:

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

Lub ewentualnie:

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

jeśli chcesz czegoś więcej niż tylko strony głównej.

Złóż wszystko razem i używaj setTimeoutw zalecany sposób (Unikaj używania „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
źródło
1
Genialne - wielkie dzięki za to. Skrypt rzeczywiście działa teraz tylko na stronie, którą chcę, a nie na wszystkich stronach.
Neil Spencer
2

Nie jestem pewien, jak to zrobić w JavaScript, ale Firefox ma dodatek o nazwie ReloadEvery . Zainstaluj go, uruchom ponownie FF, a następnie kliknij stronę prawym przyciskiem myszy i wybierz Przeładuj co i raz.

David
źródło
1
Tak - ale za każdym razem, gdy otwieram Firefox i wchodzę na stronę muszę aktywować ReloadEvery. Chciałbym, aby przeładowanie było aktywowane automatycznie po przejściu na stronę. Powyższy javascript to robi, ale także ładuje wszystkie inne otwarte karty.
Neil Spencer