J'essaie de charger un JavaScript dynamiquement avec jQuery pour initlialize mon application ajax. Je veux appeler une fonction de gestionnaire lorsque le script a été chargé avec succès. Voici à quoi ressemble mon code:Chargement du script avec jQuery - IE échoue
var $script = $('<script type="text/javascript"></script>').appendTo('head');
$script.load(function() { ... });
$script.error(function() { ... });
$script.attr('src', 'foo.js');
Cela fonctionne très bien dans FireFox, Opera, Safari et Chromium.
Le gestionnaire onload est toujours appelé après le chargement du script.
Mais l'IE (v8) n'appelle ni le gestionnaire onload ni le gestionnaire onerror. Donc, mon application ajax n'est jamais initialisée ;-)
Est-ce que quelqu'un sait comment résoudre ce problème?
Cordialement, Biggie
EDIT:
Je pense que je l'ai travail:
$.ajax({
type: "GET",
url: options.script,
data: null,
success: function(data, textStatus) {
options.onload();
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
options.onerror();
},
beforeSend: function(xhr) {
// Fix for FireFox 3 to prevent "malformed"-message
if (xhr.overrideMimeType) {
xhr.overrideMimeType("text/plain");
}
},
dataType: "script"
});
Le beforeSend
est utilisé pour prévenir la malformed
-erreur dans FireFox.
Cela semble fonctionner avec FireFox et IE. Les deux appellent le gestionnaire d'erreurs si le script n'existe pas.
comme d'autres ont noté l'événement 'onload' n'est pas déclenché dans IE. Vous devez gérer le onreadystatechange pour que IE fonctionne. – Andreas
@andreas: Cela devrait être fait automatiquement par la fonction 'ajax' si je comprends bien le code jQuery: http://github.com/jquery/jquery/blob/master/src/ajax.js#L294 – Biggie