Verwenden Sie JavaScript und Greasemonkey, um nur eine Registerkarte in Firefox neu zu laden?


8

Ich bin neu in Greasemonkey und Javascript, habe aber das folgende Skript gefunden, um alle 5 Minuten eine Seite neu zu laden.

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

Dies funktioniert, lädt jedoch alle 5 Minuten alle geöffneten Registerkarten neu und nicht nur die in der @ include-Anweisung angegebene.

Gibt es eine Möglichkeit, dies zu tun?


http://ww.bbc.co.uk existiert nicht?
Laoujin

Entschuldigung - das war nur ein Tippfehler
Neil Spencer

Antworten:


8

Dieser Code hat einen beschädigten Metadatenblock , Leerzeichen sind für diesen Block von entscheidender Bedeutung, und zusätzliche Leerzeichen am Anfang einer Zeile können ihn beschädigen, wodurch das Skript für alle Seiten ausgelöst wird (Standardverhalten).

Update: Das Auftreten eines beschädigten Blocks kann hier bei SuperUser nur ein Anzeigefehler sein. Wird gleich nachforschen.
Updatier: Der beschädigte Block ist echt, der Code des OP wird durch eine Mischung aus Tabulatoren und Leerzeichen eingerückt, was den Raw-Post-Editor von SU zum Narren gehalten hat, aber nicht die endgültige Anzeige.

Außerdem gibt die @includeDirektive eine Webseite an, die nicht existiert. ww.versus www.. Diese Zeile sollte lauten:

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

Oder möglicherweise:

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

wenn Sie mehr wollen als nur die Homepage betroffen.

Alles zusammenfügen und setTimeoutauf die empfohlene Weise verwenden (Vermeiden Sie die Verwendung von "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
Genial - vielen Dank dafür. Das Skript funktioniert jetzt tatsächlich nur auf der gewünschten Seite und nicht auf allen Seiten.
Neil Spencer

2

Ich bin nicht sicher, wie ich das in Javascript machen soll, aber Firefox hat ein Addon namens ReloadEvery . Installieren Sie es, starten Sie FF neu und klicken Sie dann mit der rechten Maustaste auf die Seite und wählen Sie ReloadEvery und eine Zeit.


1
Ja - aber jedes Mal, wenn ich Firefox öffne und auf die Website gehe, muss ich ReloadEvery aktivieren. Ich möchte, dass das Neuladen automatisch aktiviert wird, indem Sie einfach zur Seite gehen. Das obige Javascript tut dies, lädt aber auch alle anderen geöffneten Registerkarten neu.
Neil Spencer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.