script onload/onerror avec IE(pour le chargement différé) des problèmes

Je suis à la reconstruction de mon paresseux chargeur de module d'accepter asyncronus demande, mais j'ai un GROS problème:
internet explorer ne prennent pas en charge le script.onload/onerror!!!

L'ancien script dans le monde entier eval de la cible à la source du script lire avec un ajax sync appel,
il fonctionne très bien,c'est la croix-navigateur et que je peux le faire async l'édition 1 de la variable, mais il est très difficile à déboguer(TOUT le code source est exécutée en une seule ligne et le navigateur donne pas beaucoup d'infos sur les erreurs,de diviser le code en ligne avec une regexp est IMPOSSIBLE parce que js ont des blocs avec une infinie profondeur et la regexp ne sont tout simplement pas bon à cela).

C'est le code que j'utilise pour créer le script(un classique):

var script = document.createElement('script');
script.type = 'text/javascript';
script.src =name;
script.name =name;
script.async = true;
script.onload=<my_onload_code>;
script.onerror=<my_onerror_code>;

il ne fonctionne pas sur IE, car il doesen " soutien onload et onerror avec le script;
le code ci-dessous est une solution, mais ne fonctionne que si le script n'est pas asynchrone

if(script.onreadystatechange!==undefined)//only IE T_T
            script.onreadystatechange = function() {
                    if (script.readyState == 'loaded')//ERROR LOADING
                        <my_onerror_code>;
                    else
                    if(script.readyState == 'complete')//loaded
                        <my_onload_code>;

            };

je peux le tester toutes les X millisecondes jusqu'à ce que le script est chargé, mais c'est un vilain solution et je veux l'éviter.

EDIT: c'est le code que j'ai essayé de vérifier toutes les X ms si le script est chargé, il n'est pas mauvais et il fonctionne mieux que l'ajax, le problème est que je ne peux pas savoir si le script est chargé avec succès ou avec l'erreur(onload ou onerror).

var script = document.createElement('script');
script.type = 'text/javascript';
script.src =name;
script.name =name;
script.async = true;

    script.onload=function(){Lazy_loader.onload(this);};
    script.onerror=function(){Lazy_loader.onerror(this);};

    if(script.onreadystatechange!==undefined){//ie fix T_T 
        script.timer=setInterval(function(){
                    if (script.readyState == 'loaded' || script.readyState == 'complete')}//ERROR LOADING

                        if(LOADED???)//loaded
                            Lazy_loader.onload(script);
                        else
                            Lazy_loader.onerror(script);

                        clearInterval(script.timer);
                    }

                    },100);

    }

document.getElementsByTagName('head')[0].appendChild(script);

j'ai essayé d'utiliser la méthode addEventListener/attachEvent de fonctions, mais il n'a pas l'air de fonctionner(même en utilisant addEvent fonctions à partir du web)

résumant les options semble être:

  • Utiliser AJAX et mondial eval pour charger le script de débogage de l'enfer)
  • Utiliser AJAX et mondial eval seulement avec IE(peut être une solution,je n'utilise pas IE)
  • Utiliser AJAX et mondial eval seulement si le script contient des erreurs(j'ai besoin de vérifier les timings de problèmes car avec mon code, je l'ai "simuler" synchrone code, même si l'appel asynchrone)
  • Script de Test.onreadystatechange (uniquement sur IE) tous les X temps, jusqu'à ce qu'elle est chargé(LAID!!!)
  • Utilisation de la fenêtre.onload : à ÉVITER,il faut charger TOUTE la page,j'ai besoin de l'appeler quand un SEUL script est lancé(voir les détails sur endpage)
  • Ajouter un code sur la source de chaque script (ÉVITER comme dit sur endpage)
  • corriger le script.onload pour IE(à l'aide de la méthode addEventListener/attachEvent?!?)

ATTENTION:
je ne veux pas utiliser la fenêtre.onload car il est déclenché que lorsque la page est chargée,j'ai besoin de feu quand seulement la cible de script est chargé(mon chargement paresseux script est beaucoup plus complexe, de sorte s'il vous plaît ne me demandez pas pourquoi);
je NE VEUX PAS utiliser un tiers de la bibliothèque(comme jquery,prototype,etc.),
je ne veux pas même à modifier la cible à la source du script(comme lors de l'utilisation de JSPON ou l'ajout d'un script d'alerte que le script est chargé).

Espère que c'est pas trop!!!
Merci.

Selon msdn, le script prend en charge onload msdn.microsoft.com/en-us/library/cc197055%28VS.85%29.aspx
l'essayer,ça ne marchera pas. c'est comme essayer de modifier le contenu d'un <script> tag: pour des raisons de sécurité, il est désactivé.
Voir aussi script.readyState être digne de confiance pour détecter la fin de script dynamique de chargement?

OriginalL'auteur Plokko | 2010-08-14