En bref, au lieu d'alerter les URL et le corps de la réponse, je voudrais l'envoyer à mon application. Ce code fonctionne mais je ne peux pas utiliser GM_xmlhttpRequest à moins que je ne l'accorde.Pourquoi la modification de la subvention de none à GM_xmlhttpRequest casse-t-elle mon code?
Ne changez rien d'autre que le code casse par magie. Je ne suis pas sûr de ce qui est changé et comment le réparer. Je pensais pouvoir utiliser console.log
et copier/coller les données dans mon application, mais Facebook désactive console.log. J'ai pensé à faire xmlhttpRequest mais cela aussi est en quelque sorte bloqué. J'ai testé en exécutant du code dans une console. Les 3 lignes semblent fonctionner partout sauf sur un domaine Facebook. Je crois que cela a quelque chose à voir avec CORS.
// ==UserScript==
// @name FBTest
// @namespace test
// @include https://*.facebook.com/*
// @version 1
// @grant none
// ==/UserScript==
//change none to GM_xmlhttpRequest
(function() {
var proxied = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function(method, url) {
alert(url);
return proxied.apply(this, [].slice.call(arguments));
};
})();
Utilisez [ 'GM_xmlhttpRequest'] (https://wiki.greasespot.net/GM_xmlhttpRequest) au lieu de' window.XMLHttpRequest' – Mottie
@Mottie - le code essaye d '"intercepter" la fonction ouverte de XMLHttpRequest, n'utilise pas réellement XMLHttpRequest –
le problème provient du fait que tout script avec @grant * autre chose que none * s'exécute dans un environnement plus sécurisé portée. Je pensais à l'origine que vous pouviez utiliser unsafeWindow au lieu de window - cependant cela ne fonctionne pas non plus, car '.open' est alors rendu inutilisable à cause de la portée privilégiée dans laquelle s'exécute votre code' open'. –