Greasemonkey: Firefox < FF57 (par exemple FF56 et 52ESR) ne doit pas être automatiquement "mis à niveau" vers Greasemonkey 4

Créé le 13 déc. 2017  ·  13Commentaires  ·  Source: greasemonkey/greasemonkey

Le strict_min_version dans GM 4.1 est 52.0 . Cela amène les personnes utilisant des versions de Firefox qui prennent en charge les extensions héritées (par exemple FF56 et 52ESR) à "mettre à niveau" vers 4.1. De nombreuses personnes qui utilisent FF 52ESR ou qui continuent d'utiliser FF55/56 le font spécifiquement pour pouvoir continuer à utiliser les extensions héritées.

La version héritée de Greasemonkey est beaucoup plus fonctionnelle que la version 4.x, et le sera toujours. Les personnes exécutant des versions de Firefox < FF57 ne doivent pas être automatiquement "mises à niveau" vers Greasemonkey 4.x.

Ainsi, le manifest.json devrait avoir :

"strict_min_version": "57.0"

Alors que les utilisateurs peuvent choisir de désactiver les mises à jour automatiques pour GM, ou les extensions en général (c'est-à-dire que ce paramètre strict_min_version peut être contourné profil par profil), GM4 n'est pas vraiment une "mise à niveau". La plupart des utilisateurs considèrent qu'il s'agit d'une rétrogradation. Les utilisateurs ne doivent pas être automatiquement mis à niveau vers GM4 lorsque l'utilisation de GM4 n'est pas requise en raison du manque de prise en charge des extensions héritées dans la version de Firefox qu'ils utilisent.

Commentaire le plus utile

Je pense que vous devez installer la version de Greasemonkey que vous souhaitez, puis désactiver la mise à jour automatique.

Tous les 13 commentaires

Je pense que le paramètre de version min est un artefact de la période pendant laquelle la version 3.x a une WebExtension intégrée pour faciliter la migration des scripts. Sans l'abaisser, je ne crois pas que l'addon s'installerait correctement.

4.1 a été poussé avec une version minimale inférieure, _oops?_. Je ne pense pas que cela ait été fait pour "forcer délibérément" les gens sur 4.x, et l'hostilité dans le message est injustifiée.

@Sxderp Aucune hostilité n'était prévue. Je suis désolé que cela ait semblé ainsi. Même en relisant ce que j'ai écrit, je ne suis pas tout à fait sûr de la ou des parties que vous considérez comme hostiles. Donc, je l'ai édité, devinant (en partie) ce que vous pensiez être répréhensible.

Veuillez noter que bien que j'aie dit "forcé" (ce que je voulais uniquement décrire ce qui arrive aux utilisateurs), je n'ai pas dit "forcé intentionnellement" (ce qui aurait indiqué que j'attribuais une intention derrière le paramètre, ce que j'étais ne cherche pas à faire). [Tu me fais douter de moi-même. Je ne pense pas avoir dit "forcer volontairement", mais maintenant que j'ai modifié le commentaire original, je ne peux pas le vérifier à 100%, car en tant qu'auteur du message, je ne reçois pas d'e-mail avec le contenu. Si je l'ai fait, je suis désolé. Ce n'était pas prévu.]

Remarque : bien que j'aie des sentiments négatifs envers Mozilla concernant le passage à WebExtensions uniquement, je pense que les personnes impliquées dans GM gèrent bien la situation dans laquelle Mozilla les a placés. Cela implique d'avoir à faire face au grand nombre de personnes qui blâment les auteurs d'extensions pour des choses qui sont entièrement de la faute de Mozilla.

eyep, j'ai "gelé" mon FF à v56 et maintenant avec GM4.1 j'obtiens des erreurs obscures comme "Error: Permission denied to access property "nodeType"" sur des scripts très simples.

Je reçois des erreurs obscures comme

Les scripts utilisateur sont exécutés dans un contexte de "script de contenu". Si des objets/fonctions sont déclarés dans ce contexte, ils doivent être clonés dans la fenêtre avant que la fenêtre puisse y accéder. Mozilla a implémenté cette fonctionnalité de sécurité et empêche les fuites dans la portée de la page.

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Sharing_content_script_objects_with_page_scripts

@Sxderp ouais, j'ai déjà lu dans les notes de mise à jour que unsafeWindow fonctionne différemment et il faut utiliser exportFunction() or cloneInto() et lier le même article que vous (qui explique comment écrire des extensions, pas des scripts utilisateur )). Personne ne donne d'exemples sur la manière de le faire dans les scripts utilisateur. Mais c'est à côté de la question. Le fait est que FF<=56 ne souffre pas de tout ce retard donc il n'y a aucune raison de le forcer.

Personne ne donne d'exemples sur la manière de le faire dans les scripts utilisateur.

A peu près exactement la même chose. Si quelqu'un dit "script de contenu", remplacez-le par "script utilisateur". Procédez normalement.

Par exemple, voici quelque chose que j'ai posté il y a quelque temps.

De plus, si vous utilisez window.eval() , l'argument sera exécuté directement dans la portée de la page sans avoir à gérer l'exportation.

Merci. comme pour eval() - eval est mauvais et la première règle d'utilisation d'eval est "ne pas utiliser eval".

@Spown IMO, exportFunction() et cloneInto() doivent être évités, car ils ne sont que Firefox. Un avantage important des scripts utilisateur et des WebExtensions est qu'ils peuvent être exécutés dans différents navigateurs. Il existe plusieurs façons d'exécuter du code dans le contexte de la page. La façon dont je le fais à la fois dans les scripts utilisateur et les scripts de contenu est une fonction, executeInPage() , que vous pouvez trouver dans cette réponse sur Stack Overflow . Il vous permet de passer des paramètres à la fonction que vous appelez, en clonant ces paramètres dans le contexte de la page. Avec une fonction simple qui assigne la valeur du paramètre passé à une variable dans le contexte de la fenêtre (par exemple window[variableName] ), vous pouvez facilement faire ce que fait cloneInto() .

Ce n'est pas aussi flexible que cloneInto() , car il ne gère que Object , Array , function , RegExp , Date , et/ou d'autres primitives ( Boolean , null , undefined, Number et String , mais pas Symbol ).

@Sxderp tout cela est peut-être vrai, mais je m'en fiche car je choisis de ne pas participer à tout cela en ne mettant pas à jour vers FF> 56. Mais ça s'infiltre toujours comme dans ce cas.

BTW, essayer de réutiliser le jQuery de la page dans mon script (qui renvoie l'erreur susmentionnée) comme vous l'avez fait dans votre exemple génère toujours la même erreur. nvm

Je pense que vous devez installer la version de Greasemonkey que vous souhaitez, puis désactiver la mise à jour automatique.

Si je mets à niveau vers Greasemonkey 4, est-il possible d'installer Greasemonkey 3 pour rétrograder et continuer à l'utiliser, si je le souhaite ? Ou Greasemonkey 4 apporte-t-il des modifications irréversibles ?

@garyking , vous devriez pouvoir rétrograder sans problème. Les fichiers de script doivent rester.

Cette page vous a été utile?
0 / 5 - 0 notes