Vous utilisez JavaScript et Greasemonkey pour recharger un seul onglet dans Firefox?

8

Je suis nouveau sur Greasemonkey et javascript mais j'ai trouvé le script ci-dessous pour recharger une page toutes les 5 minutes.

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

Cela fonctionne mais il recharge tous les onglets ouverts toutes les 5 minutes et pas seulement celui spécifié dans l'instruction @include.

Y a-t-il une manière de faire ça?

Neil Spencer
la source
http://ww.bbc.co.uk n'existe pas?
Laoujin
Désolé - c'était juste une faute de frappe
Neil Spencer

Réponses:

8

Ce code a un bloc de métadonnées corrompu , les espaces sont essentiels pour ce bloc et des espaces supplémentaires au début d'une ligne peuvent le casser, provoquant le déclenchement du script pour toutes les pages (comportement par défaut).

Mise à jour: L'apparition d'un bloc corrompu peut simplement être un bug d'affichage ici à SuperUser. Va enquêter dans un peu.
Updatier: Le bloc corrompu est réel, le code de l'OP est indenté par un mélange d'onglets et d'espaces, qui a trompé l'éditeur de messages bruts de SU, mais pas l'affichage final.

De plus, la @includedirective spécifie une page Web qui n'existe pas. ww., contre www.. Cette ligne devrait être:

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

Ou peut-être:

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

si vous voulez plus que la page d'accueil effectuée.

Assembler le tout et l'utiliser setTimeoutde la manière recommandée (éviter d'utiliser "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
la source
1
Brillant - merci beaucoup pour cela. Le script ne fonctionne en effet désormais que sur la page que je souhaite plutôt que sur toutes les pages.
Neil Spencer
2

Je ne sais pas comment faire cela en Javascript, mais Firefox a un addon appelé ReloadEvery . Installez-le, redémarrez FF puis faites un clic droit sur la page et choisissez ReloadEvery et une heure.

David
la source
1
Oui, mais chaque fois que j'ouvre Firefox et que je vais sur le site Web, j'ai besoin d'activer ReloadEvery. Ce que je voudrais, c'est que le rechargement soit automatiquement activé juste en allant sur la page. Le javascript ci-dessus le fait mais recharge également tous les autres onglets ouverts.
Neil Spencer