J'ai rencontré un problème similaire après la mise à jour de GreaseMonkey vers la version 4, mais j'ai utilisé
addEventListener("DOMContentLoaded", function(){
// …
});
au lieu de cela.
Lorsque j'ai essayé de corriger mes user-scripts, j'ai d'abord commenté ce wrapper et j'ai mis un
// @run-at document-end
dans le bloc de métadonnées . De cette façon, je me suis assuré que le DOM était prêt et que le code qui se trouvait à l'origine dans le fichier DOMContentLoaded
s'est exécuté correctement.
Cela a fonctionné, mais pour deux de mes user-scripts, j'ai eu besoin d'exécuter JavaScript, avant que la page scripts n'ait été exécutée. et exécuter d'autres codes lorsque le DOM est prêt. Il s'avère que maintenant vous besoin pour mettre
// @run-at document-start
dans le bloc de métadonnées afin que le DOMContentLoaded
pour qu'il fonctionne sur votre window
(ou document
).
Dans les versions précédentes de GreaseMonkey, il suffisait d'omettre ce point pour que le système fonctionne correctement.
Toutefois, selon la GreaseSpot Wiki , document-start
n'est pas garantie de fonctionner dans GreaseMonkey 4.0, peut-être en raison d'une exécution asynchrone ou de fonctionnalités manquantes dans la réécriture WebExtensions de l'add-on.
En outre, document.readyState
sera "loading"
con document-start
mais "interactive"
con document-end
ou non // @run-at
du tout.