Greasemonkey: xmlHttpRequest.open n'accepte plus le chemin sans protocole et hôte

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

J'ai remarqué dans jesus2099/konami-command#372 que Firefox v57 + Greasemonkey v4 ne fonctionnerait qu'avec l'URL complète https?://host.tld/pathname et ne fonctionne plus avec seulement /pathname .
Firefox v57 + un autre moteur GM n'est pas concerné par cette régression, c'est pourquoi j'ouvre un ticket ici.

Tous les 9 commentaires

Dans ma solution de contournement , j'ai dû ajouter self.location.protocol + "//" + self.location.host + devant mon URL.

Les requêtes d'exécution à partir d'un contexte de script de contenu (dans lequel les scripts utilisateur sont exécutés) doivent utiliser des URL complètes.

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilités#Content_script_requests_happen_in_the_context_of_extension_not_content_page

Si vous ne souhaitez pas utiliser d'URL complètes, vous pouvez utiliser les méthodes sur window.wrappedJSObject et exporter toutes les fonctions nécessaires à l'exécution (onreadystatechange, etc.) en utilisant exportFunction() . Ma suggestion est juste d'utiliser des URL complètes.

Merci beaucoup pour votre aide.
OK, vous voulez dire que c'est conforme aux spécifications du système WebExtensions, n'est-ce pas ?
Je ne connais pas ce truc WebExtensions, mais ça semble être un standard…?
Je ne me souviens pas avoir lu quoi que ce soit sur cette régression particulière dans les articles de blog GM v4 pour les auteurs .
C'est sûr que cette régression est permanente ?

C'est sûr que cette régression est permanente ?

Peut-être. Je ne sais pas vraiment. Peut-être que <strong i="7">@grant</strong> none n'aura pas ces problèmes, si un bac à sable approprié peut être créé. Mais si certaines API privilégiées sont requises, ces étapes peuvent être nécessaires. La balle est vraiment dans le camp de Mozilla.

FTR mon script est un script <strong i="5">@grant</strong> none .
Je laisse les porteurs de projet fermer ou ne pas fermer ce ticket.
je vais m'adapter.

Ce n'est pas prévu, il ne faut donc pas s'attendre à ce qu'il soit permanent. Nous pourrions résoudre totalement les chemins non absolus basés sur le document en tant que racine.

Veuillez noter que l'URL de base correcte est : document.baseURI (liée à <base href="..."> )

Je peux confirmer, jQuery AJAX ne fonctionne pas avec uniquement l'URL du chemin.
Firefox 57, dernier Greasemonkey.

$.ajax({
  url: '/some/path',
  success: () => {}
});

Mon AJAX fonctionne avec l'ancien Firefox (pré-WebExtensions)

Le correctif ci-dessus a été emballé dans une nouvelle version bêta :
https://addons.mozilla.org/firefox/downloads/file/830369/greasemonkey-4.2beta1-an+fx.xpi?src=devhub

Des tests et une confirmation seraient appréciés!

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