2009-12-08 2 views
-1

La tâche de mon script utilisateur est assez simple: écouter les requêtes XHR via un pont XHR, manipuler les données reçues et les renvoyer. Tout se passe de manière transparente, bien sûr.Problème d'interception des requêtes AJAX (XHR) du script GreaseMonkey

je suis tombé sur cette réponse How can I intercept XMLHttpRequests from a Greasemonkey script? sur le SO - qui fournit les éléments suivants bout de code:

(function(open) { 
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
     this.addEventListener("readystatechange", function() { 
      console.log(this.readyState); 
     }, false); 
     open.call(this, method, url, async, user, pass); 
    }; 
})(XMLHttpRequest.prototype.open); 

Le code fonctionne comme prévu lorsqu'il est poussé par Firebug. Cependant, il ne fait rien dans un script Greasemonkey.

sur d'autres recherches, je suis tombé sur une autre réponse: how intercept xhr with greasemonkey - qui mentionne que:

Greasemonkey et Firefox 3.x ne prend pas en charge le -property « prototype ». S'il vous plaît voir le billet suivant pour plus d'informations: http://greasemonkey.devjavu.com/ticket/164

J'ai deux questions de base:

  1. s'appliquent cette loi à Fx v3.5.x ainsi que? (Note: Le lien du ticket sur devjavu.com n'est pas accessible)
  2. Que signifie la signature (function(){})() en Javascript. (Veuillez supporter, je ne suis pas un expert en JS avancé).
+0

Suite à la réponse de Tomasz (à Q # 2), voici un pointeur pour les autres: http://www.hunlock.com/blogs/Functional_Javascript#quickIDX5 – Jumper

Répondre

0

fonction () {} est fonction anonyme (lambda), en ajoutant () après simplement sur exécute la volée.
Il est très pratique de conserver une portée (unique) différente pour un morceau de code.

(function(){ 
    var localVariable = 'temp'; 
})(); 
console.log(localVariable); // outputs undefined 
+0

à proprement parler * lambda * signifie en utilisant une fonction un argument dans un appel à une autre fonction, mais de toute façon :-) –

+0

Tomasz, Merci pour la clarification. Un indice sur la première question? – Jumper

Questions connexes