Depuis la sortie de Greasemonkey 1.0, de nombreux utilisateurs ont rencontré des problèmes avec leurs scripts Greasemonkey qui ne fonctionnaient pas correctement lors de l'interaction avec des sites Web qui utilisent également jQuery . Ce conflit découle du nouveau code @grant introduit.
Comprendre le conflit :
Après la mise à niveau vers Greasemonkey 1.0, le mécanisme du bac à sable pour les scripts Greasemonkey a fondamentalement changé. Le code @grant, qui permet aux scripts de demander des API spécifiques, est désormais requis pour que les scripts accèdent à l'environnement de la page, y compris jQuery. Cependant, lorsqu'un site Web dispose déjà de jQuery, des conflits surviennent en raison de versions et d'espaces de noms contradictoires.
Résoudre le problème :
Il y a eu de nombreuses tentatives pour résoudre ce conflit. Une solution suggérée consiste à utiliser :
this.$ = this.jQuery = jQuery.noConflict(true);
Cependant, cette approche ne garantit pas la compatibilité dans tous les cas. Une stratégie plus efficace consiste à restaurer le bac à sable.
Restauration du bac à sable :
Pour restaurer le bac à sable et atténuer les conflits, modifiez le bloc de métadonnées de votre script Greasemonkey et ajoutez ce qui suit lignes :
// @grant GM_addStyle // @grant GM.getValue // ==/UserScript==
Ces directives @grant spécifient les API couramment utilisées dans les scripts Greasemonkey. En les incluant, le bac à sable est réactivé et les conflits sont résolus.
Remarques supplémentaires :
Cette méthode de restauration du bac à sable garantit la compatibilité avec des moteurs supérieurs comme Tampermonkey et Violentmonkey. C'est une solution plus stable et fiable que la modification des espaces de noms jQuery.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!