Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec le XMLHttpResquest.responseText.

En créant un plugin Chrome.

    20 mars 2011 à 22:10:14

    Bonjour à tous !

    Je suis en train faire quelques tests pour créer un plugin chrome.
    J'ai créé ce bout de code :

    function testAjax() {
                // Creer un object xhr pour communiquer avec le serveur
                xhr = new XMLHttpRequest() ;
                
                // Mettre en place la fonction de callback
                xhr.onreadystatechange = function() {
    		        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))  {
    		            var codeJs = "document.getElementsByTagName(\"body\")[0].innerHTML += \"La page a un score de : "+ "TOTO" +"\" ;" ;
    	                chrome.tabs.executeScript(null,{code:codeJs}) ;
    		        }
    	        };
    
                
                // Envoyer la requête de traitement
                chrome.tabs.getSelected(null, function(tab) {
                    xhr.open("GET","http://localhost:55666/"+tab.url,true) ;
                    xhr.send(null) ;
                }) ;
            }
    


    Il s'agit d'une fonction qui est appelée lors du clic sur un bouton. Cette fonction interroge un autre programme qui tourne sur le même ordinateur (c'est moche, mais c'est juste pour le test), puis réalise une injection javascript qui affiche comme résultat "TOTO" dans la page courante de chrome.
    Et ça marche.

    Si maintenant je fait exactement la même chose mais en remplaçant "TOTO" par la valeur récupérée par le xmlHttpRequest (c'est le but final) :

    function testAjax() {
                // Creer un object xhr pour communiquer avec le serveur
                xhr = new XMLHttpRequest() ;
                
                // Mettre en place la fonction de callback
                xhr.onreadystatechange = function() {
    		        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))  {
    		            var codeJs = "document.getElementsByTagName(\"body\")[0].innerHTML += \"La page a un score de : "+ xhr.responseText +"\" ;" ;
    	                chrome.tabs.executeScript(null,{code:codeJs}) ;
    		        }
    	        };
    
                
                // Envoyer la requête de traitement
                chrome.tabs.getSelected(null, function(tab) {
                    xhr.open("GET","http://localhost:55666/"+tab.url,true) ;
                    xhr.send(null) ;
                }) ;
            }
    


    Là, l'injection ne fonctionne pas ! J'ai pourtant essayé d'afficher la chaine codeJs, qui contient le code js qui va être injecté, et cette chaine contient bien la valeur récupérée, et forme un code javascript correct...

    Cela voudrait-il dire que xmlHttpRequest.responseText n'est pas une chaine de caractère ? Si non, comment faire pour arriver à concaténer cette réponse au reste de la string contenant du code javascript ?

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2011 à 3:59:02

      Salut,

      Essaye premièrement d'afficher la valeur de xhr.responseText et assure-toi qu'elle contient ce qu'elle doit contenir.

      Berseker59
      • Partager sur Facebook
      • Partager sur Twitter

      Problème avec le XMLHttpResquest.responseText.

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown