Exécuter un script Greasemonkey qu'une seule fois par chargement de la page?
Si vous créez un script Greasemonkey avec @include *
et aller à un site comme youtube, il exécute le script+ de 20 fois chaque fois que vous actualisez. C'est sur Firefox, vous ne savez pas à propos de google Chrome.
Est-il un moyen pour éviter cela?
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous ne voulez probablement pas le script à exécuter dans des iFrames.
Vous pouvez empêcher que l'utilisation de le
@noframes
de la directive qui travaille maintenant dans les deux Greasemonkey et Tampermonkey en octobre 2014.Pour les versions plus anciennes, ou pour les moteurs de script qui ne supportent pas
@noframes
, vous pouvez utiliser ce code, juste après le bloc de métadonnées:Deuxièmement, vous pouvez attendre et le feu de votre GM code, une fois, au chargement de la page. Envelopper le tout dans une
main()
et de l'appeler sur leload
événement, comme suit:Troisième, vous pouvez exclure des sites ou des pages en ajoutant
//@exclude
directives pour le bloc de métadonnées.Dans l'ensemble, il est préférable d'éviter universellement compris GM scripts, si possible.
D'autres méthodes peuvent définir des indicateurs ou de recharger la page avec les paramètres d'URL. Ces obtenir difficile donc de les enregistrer comme un dernier recours.
GM_log(location.href)
et étroit @include.Vous pouvez par exemple stocker la position donnée dans une variable persistante.
Au chargement de la page, vous avez pour vérifier, si la position actuelle est déjà stockée dans cette variable.
Si non, vous définissez la variable et de l'exécution de votre fonction, si oui ne rien faire.
Comment stocker persistante variables: GM_setValue