0

Ich suche nach irgendeiner Weise asynchrone Anfragen über XHR senden an:Chrome Extensions - Asynchronous XHR?

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

Eigentlich nur, nachdem ich versuche Anfragen zu senden Seite geladen wird:

$(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"); 
     } 
    }; 
}); 

Aber die User Experience ist wirklich nicht gut, es friert ein, bis es Daten von myserver.com bekommt und gleich danach zeigt es die popup window an.

Gibt es eine Möglichkeit, zuerst das Popup-Fenster anzuzeigen und danach einige laden Text/Bild für den Benutzer und NACH dem Start Push-Anfragen?

Antwort

1

Wenn Sie jQuery verwenden bereits, warum dann nicht bequem Wrapper jquery ajax verwenden:

$(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"); 
     } 
    }); 
} 

Setzen Sie das Skript nicht in <head> aber am Ende eines <body>. Wenn es noch eine Seite friert dann versuchen setTimeout mit:

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

Ich weiß nicht, warum Chrome wie diese verhalten, aber setTimeout (getData, 0); geholfen ... :-) –