44 votes

Erreur JavaScript IE9: SCRIPT5007: Impossible d'obtenir la valeur de la propriété 'ui': l'objet est null ou non défini

Mon site fonctionne très bien sur Chrome, Firefox et Internet Explorer 8. Mais sur Internet Explorer 9, très bizarre erreurs déclenchées lors de la juste planant au-dessus de composants.

SCRIPT5007: Impossible d'obtenir la valeur de la propriété 'ui': l'objet est null ou undefined ScriptResource.axd?d=sTHNYcjtEdStW2Igkk0K4NaRiBDytPljgmcypqxv5nez1ietx3drhufmftemwoh2l3771sigglr2bqloxaiwxveveperldcl0hfhhufdtom0o55k0&t=ffffffffd37cb3a1 ligne 181 caractère 1914

Et en suivant le lien de l'erreur dans le code javascript, montre-moi ces bouts de code:

onNodeOver:function(B,A){A.ui.onOver(B)},onNodeOut:function(B,A){A.ui.onOut(B)}

Je suis un peu paumé sur la façon de résoudre cette erreur. J'ai vu cette solution mais cela ne résout pas le problème pour moi.

Des Idées?

149voto

Stephen Chung Points 9467

Beaucoup de bibliothèques JavaScript (en particulier les non-récents) ne gèrent pas IE9 bien parce qu'il rompt avec IE8, dans le traitement de beaucoup de choses.

Code JS qui renifle pour IE échoue assez fréquemment dans IE9, à moins que ce code est réécrit afin de gérer IE9 en particulier.

Avant que le code JS est mis à jour, vous devez utiliser le "X-UA-Compatible" de la balise meta à la force de votre page web dans IE8 mode.

EDIT: ne Peut pas croire que, 3 ans plus tard et nous sommes sur IE11, et il y a encore de votes pour cette. :-) Beaucoup de bibliothèques JS devrait maintenant à moins de soutien IE9 en mode natif et plus de soutien IE10, de sorte qu'il est peu probable que vous aurez besoin de la balise meta ces jours-ci, à moins que vous n'avez pas l'intention de mettre à niveau votre bibliothèque JS. Mais attention, IE10 modifications de choses à propos de la croix-domaine de script et de certains CDN-bibliothèque de code pauses. Vérifiez votre version de bibliothèque. Par exemple, Dojo de 1,9 sur le CDN se briser sur IE10, mais 1.9.1 elle n'en résout.

EDIT 2: Hey, les gars, vous avez VRAIMENT besoin pour obtenir vos actes maintenant. Nous sommes maintenant à la mi-2014!!! Je suis TOUJOURS prise en main de votes pour cette! Réviser vos sites à se débarrasser de la vieille-IE codée en dur dépendances!

Soupir... Si j'avais su que ce serait, et de loin mon plus populaires de réponse, j'aurais probablement passé plus de temps à polir...

14voto

savan Points 81

Je suis peut-être en retard mais comme j'avais le même problème dans IE 9, j'ai suivi la réponse ci-dessus et j'ai ajouté la ligne

 <meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />
 

en <head> et cela a fonctionné

Je vous remercie.....

5voto

Justin Russo Points 685

J'ai écrit du code qui renifle IE4 ou plus et est actuellement en parfait état de fonctionnement dans les sites de mes clients, ainsi que mes propres sites personnels.

Inclure les éléments suivants constante énumérée et de la fonction des variables en javascript inclure le fichier sur votre page...

//methods
var BrowserTypes = {
    Unknown: 0,
    FireFox: 1,
    Chrome: 2,
    Safari: 3,
    IE: 4,
    IE7: 5,
    IE8: 6,
    IE9: 7,
    IE10: 8,
    IE11: 8,
    IE12: 8
};

var Browser = function () {
    try {
        //declares
        var type;
        var version;
        var sVersion;

        //process
        switch (navigator.appName.toLowerCase()) {
            case "microsoft internet explorer":
                type = BrowserTypes.IE;
                sVersion = navigator.appVersion.substring(navigator.appVersion.indexOf('MSIE') + 5, navigator.appVersion.length);
                version = parseFloat(sVersion.split(";")[0]);
                switch (parseInt(version)) {
                    case 7:
                        type = BrowserTypes.IE7;
                        break;
                    case 8:
                        type = BrowserTypes.IE8;
                        break;
                    case 9:
                        type = BrowserTypes.IE9;
                        break;
                    case 10:
                        type = BrowserTypes.IE10;
                        break;
                    case 11:
                        type = BrowserTypes.IE11;
                        break;
                    case 12:
                        type = BrowserTypes.IE12;
                        break;
                }
                break;
            case "netscape":
                if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { type = BrowserTypes.Chrome; }
                else { if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) { type = BrowserTypes.FireFox } };
                break;
            default:
                type = BrowserTypes.Unknown;
                break;
        }

        //returns
        return type;
    } catch (ex) {
    }
};

Ensuite, tout ce que vous avez à faire est d'utiliser tout conditionnelle des fonctionnalités telles que la...

c'est à dire. value = (Browser() >= BrowserTypes.IE) ? node.text : node.textContent;

ou WindowWidth = (((Browser() >= BrowserTypes.IE9) || (Browser() < BrowserTypes.IE)) ? window.innerWidth : document.documentElement.clientWidth);

ou sJSON = (Browser() >= BrowserTypes.IE) ? xmlElement.text : xmlElement.textContent;

L'idée? Espérons que cette aide.

Oh, vous voudrez peut-être garder à l'esprit à l'AQ, le Navigateur() la fonction après IE10 est sorti, juste pour vérifier qu'ils n'ont pas changer les règles.

0voto

Rosdi Kasim Points 3588

Vous pourriez également avoir cette erreur si vous visualisez accéder à la page localement (via file:// au lieu de http:// ).

Il y a quelques discussions à ce sujet ici: https://github.com/jeromegn/Backbone.localStorage/issues/55

-1voto

Fazi Points 530

Eh bien, vous devriez aussi essayer d’ajouter le code Javascript dans une fonction, puis d’appeler la fonction après le chargement du corps du document, c’est efficace pour moi :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X