jQuery.ajax d'échec de l'appel à l'intérieur de extension Chrome

Je suis le portage de l'un de mes extensions Firefox à Chrome, et je suis confronté à un petit problème avec une requête AJAX. Le code suivant fonctionne très bien dans la FF extension, mais échoue avec un statut de "0" dans Chrome.

function IsImage(url) {
    var isImage = false;
    var reImageContentType = /image\/(jpeg|pjpeg|gif|png|bmp)/i;
    var reLooksLikeImage = /\.(jpg|jpeg|gif|png|bmp)/i;

    if(!reLooksLikeImage.test(url)) 
    {
        return false;
    }

    var xhr = $.ajax({
        async: false,
        type: "HEAD",
        url: url,
        timeout: 1000,
        complete : function(xhr, status) {
            switch(status)
            {
                case "success":
                    isImage = reImageContentType.test(xhr.getResponseHeader("Content-Type"));
                    break;
            }
        },
    });

    return isImage;
}

Cette partie de l'extension vérifie ce qui est dans le presse-papiers (un autre Chrome problème, j'ai déjà résolu), et, si l'URL de l'image, il envoie une requête HEAD et vérifie le "Content-Type" en-tête de réponse pour être sûr que c'est une image. Si oui, il va retourner true, coller le texte du presse-papiers dans une balise IMG. Sinon, si il ressemble à un URL qui n'est pas une image, il l'enveloppe dans une balise. Si ce n'est pas une URL, il n'a tout simplement une simple pâte.

De toute façon, l'url en cours de vérification est certainement une image, et fonctionne très bien dans les FF, mais dans la fonction complète, xhr.est à l'état "0", et est à l'état "erreur" quand la fonction se termine. Augmenter le délai d'attente de 10 secondes ne l'aide pas. J'ai vérifié les images de test devrait revenir comme "image/jpeg" lors de l'exécution:

curl -i -X HEAD <imageURL>

Je sais aussi que je devrais être à l'aide de l'erreur et de réussite des rappels, au lieu de remplir, mais ils ne fonctionnent pas non plus. Des idées?

Peut-elle être une restriction de sécurité sur toutes les requêtes AJAX à partir de l'extension?
ne devrait pas return isImage; être partie du rappel?
Il peut l'être. C'était juste pour avoir un point de retour, mais il n'a même pas en arriver là, car le commutateur(statut) est une "erreur", de sorte que la branche n'est jamais appelée.
Je parie que c'est le problème, mais je n'ai pas compris l'exploitation forestière dans Chrome, autres que les alert() appelle, donc je ne suis pas sûr si c'est en silence à défaut ou s'il y a un autre problème. xhr.responseText est également vide.
Êtes-vous sûr de type: "HEAD" ? Le doc dit que c'est censé être GET ou POST, d'autres sont permis, mais pas pris en charge dans tous les navigateurs. Ce pourrait bien être le cas, car il fonctionne de FF, mais pas dans google chrome.

OriginalL'auteur Chris Doggett | 2009-12-23