2010-12-13 61 views
0

Je cherche un moyen d'envoyer des requêtes asynchrones via XHR:Extensions Chrome - XHR asynchrone?

http://code.google.com/chrome/extensions/xhr.html

En fait, je suis en train d'envoyer des demandes juste après la page est chargée:

$(document).ready(function() { 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "https://myserver.com/", true); 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4) { 
      // Get logged user 
      username = $("div.user", xhr.responseText).text() 
        .replace(/.*\(([a-z0-9]*)\).*/, "$1"); 
     } 
    }; 
}); 

Mais l'expérience utilisateur est vraiment pas bon, il se fige jusqu'à ce qu'il obtienne des données de myserver.com et juste après cela il affiche le popup window.

Y at-il un moyen d'afficher d'abord la fenêtre contextuelle et après cela montrer un certain chargement de texte/image à l'utilisateur et après avoir commencé à pousser des demandes?

Répondre

1

Si vous utilisez déjà jquery alors pourquoi ne pas utiliser wrapper ajax jquery pratique:

$(document).ready(function() { 
    getData(); 
}); 

function getData() { 
    $.ajax({ 
     url: "https://myserver.com/", 
     type: "GET", 
     dataType: "text", 
     success: function(data) { 
     username = $("div.user", data.replace(/.*\(([a-z0-9]*)\).*/, "$1"); 
     } 
    }); 
} 

Mettez ce script pas à l'intérieur <head> mais à la fin d'un <body>. S'il gèle encore une page puis essayez d'utiliser setTimeout:

$(document).ready(function() { 
    setTimeout(getData, 0); 
}); 
+2

Je ne sais pas pourquoi Chrome comporte comme ça, mais setTimeout (getData, 0); aidé... :-) –