2013-01-22 34 views
9

ho difficoltà a trovare la mia app caricamento su Internet Explorer 7 & 8 e addirittura 9.AngularJS e Internet Explorer

sto ottenendo il seguente messaggio di errore (consolle)

Uncaught TypeError: Cannot read property 'nodeName' of undefined 

Sul carico del { {}} le variabili si stanno caricando e stanno scomparendo. Niente è stato reso.
ho aggiunto questo al tag html:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:ng="http://angularjs.org" id="ng-app" class="ng-app: myapp;"> 

ho aggiunto ieshiv.js dal quadro AngularUI.
ho aggiunto

<!--[if lt IE 8]> 
    <script src="files/js/json3.min.js"></script> 
<![endif]--> 

(Domanda: basta questo, semplicemente aggiungendo alla mia sezione di testa o devo modificare il mio codice di troppo?)

Ho anche aggiunto questo al mio capo sezione:

<!--[if lte IE 8]> 
     <script> 
     document.createElement('ng-include'); 
     document.createElement('ng-pluralize'); 
     document.createElement('ng-view'); 
     document.createElement('slide'); 
     document.createElement('carousel'); 

     // Optionally these for CSS 
     document.createElement('ng:include'); 
     document.createElement('ng:pluralize'); 
     document.createElement('ng:view'); 
     </script> 
    <![endif]--> 

E non funziona affatto. Non vengono caricate variabili, non viene visualizzato l'elenco e il sito Web non funziona.
Chrome, FF e Opera stanno funzionando bene.

Avete suggerimenti da dove iniziare?

EDIT 1:
link al mio controller.js su paste.bin
http://pastebin.com/z67qE9ME

EDIT 2:
E 'forse l'ordine del js carico?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script> 
<!--[if lt IE 8]> 
    <script src="files/js/json3.min.js"></script> 
<![endif]--> 
<script src="files/js/angular.min.js"></script> 
<script src="files/js/ui-bootstrap-tpls-0.1.0-SNAPSHOT.js"></script> 
<script src="files/js/angular-ui.js"></script> 
<script src="files/js/angular-resource.min.js"></script> 
<script src="files/js/controller.js"></script> 
<script src="files/js/select2.js"></script> 
<script src="files/js/main.js"></script> 

EDIT 3:
Ok, ho aggiunto fauxconsole.js alla mia sceneggiatura e pulito il codice e ha funzionato. Bene, almeno si sta caricando correttamente (senza alcuna correzione CSS). Ma non carica lo stile in linea su alcuni dei miei tag. Hai un'idea del perché?

<a ng-click="details.show=toggle(marker)" ng-class="{active_marker: active_marker.show == marker.id}" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.coordleft}}px;top:{{marker.coordtop}}px"> 
</a></div> 

EDIT 4:
Edit 3 è anche risolto con questo aiuto qui:
https://groups.google.com/d/msg/angular/0zHsVuUryKI/ckTvY93NcRsJ

ma ho ottenuto oggi un altro problema. In IE 8 e sotto il modello di percorso non viene eseguito il rendering. Vedo solo le {{}} variabili e non di più.

EDIT 5:
Questo è strano. Sono riuscito a caricare il primo modello giusto. Tutte le parentesi {{}} si stanno caricando correttamente.
ho aggiunto alla mia .resolve Ctrl:

// DealerDetailsCtrl 
function DealerDetailsCtrl($scope, $rootScope, $routeParams, dealerService, datasets) { 
    $scope.loading = true; 
    // Abfrage 
    $rootScope.dealerdetails = datasets; 
    // inline styles fuer positionierung laden 
    $rootScope.itemStyle2 = function (item) { 
     return { left: item.divleft * 1 + 390 + 'px', top: item.divtop * 1 + 160 + 'px'}; 
    }; 
    //Feedback zur Message zurruecksetzen 
    $scope.issend = $rootScope.issend; 
    $rootScope.issend = false; 
    $scope.loading = false; 
    //Close Button 
    $rootScope.close = function() { 
     $rootScope.marker = null; 
     $rootScope.details = {show: false}; 
     $rootScope.alldealer = {show: false}; 
     $rootScope.active_marker = null; 
    }; 
    $rootScope.$on("$routeChangeStart", function (event, next, current) { 
     $scope.loading = true; 
    }); 

} 
DealerDetailsCtrl.resolve = { 
    datasets : function($q, $http, $route, $rootScope) { 
     var deferred = $q.defer(); 

     $http.get('files/framework/dealer/'+ $route.current.params.id +'/' + $rootScope.token).success(function(data) { 
      deferred.resolve(data); 
     }); 

     return deferred.promise; 
    } 
}; 

la cosa strana è.Dal modello (correttamente renderizzato), collego a un secondo modello e percorso (da rivenditore /: id a/dealermessage /: id), ma questa rotta (e tutto è lo stesso compresa la risoluzione) non si carica correttamente, stesso errore di prima, il modello non è reso.

Rotte:

app.config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
    when('/dealer/:id', { 
     templateUrl: 'files/tpl/dealer-details.html?333', 
     controller: 'DealerDetailsCtrl', 
     activetab: 'details', 
     resolve: DealerDetailsCtrl.resolve 
    }). 
    when('/dealermessage/:id', { 
     templateUrl: 'files/tpl/dealer-message.html?222', 
     controller: 'DealerMessageCtrl', 
     activetab: 'message', 
     resolve: DealerMessageCtrl.resolve 
    }). 
    when('/dealersendmessage/:id', { 
     templateUrl: 'files/tpl/dealer-details.html?444', 
     controller: 'DealerDetailsCtrl', 
     activetab: 'details', 
     resolve: DealerDetailsCtrl.resolve 
    }). 
    otherwise({ 
     redirectTo: '/dealer' 
    }); 
}]); 

Qualcuno ha un indizio, cosa o dove l'errore può essere?

+0

Distacco alcuni il codice in un jsfiddle sarebbe un ottimo modo per iniziare. – Patrick

+0

Questo potrebbe essere un problema, perché è un progetto cliente suddiviso in molti file, ma pubblicherò controller.js e il modello html principale. Solo un momento. – Marek123

+0

''? – maxisam

risposta

0

Ogni volta che ho ricevuto questo tipo di errori in IE (specialmente 8) era uno di questi 2 problemi.

1) Io sto usando un tag personalizzato come <auto-complete> e non stava usando document.createElement

2) ho avuto elementi con duplicati id attributi. A IE non piace questo.

Il metodo di eliminazione funziona normalmente per isolare il problema nel modello.