2013-11-27 15 views
5

Sto costruendo un sito Web di una pagina, utilizzando AngularJS, ui-router e jquery, e ho bisogno che supporti otto browser.
Ho seguito le istruzioni dalla documentazione AngularJS (link) e ho letto anche this e ho seguito le sue istruzioni.
In poche parole: ho aggiunto questo codice nell'intestazione:AngularJS IE 8 Supporto

<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="myApp"> 

e anche:

<!--[if lt IE 9]> 
    <script type="text/javascript" src="/app/js/3rdparty/html5shiv.js"></script> 
    <script type="text/javascript" src="/app/js/3rdparty/json3.min.js"></script> 
<![endif]--> 

Tutte le mie direttive si limitano ad essere utilizzato come direttive attributi (nessun tag personalizzati).
Tuttavia, nessuna vista viene visualizzata e nessuna direttiva funziona (ad esempio 8).

Ho iniziato a utilizzare l'interfacciare solo di recente, e il problema esisteva già prima.
Non riesco davvero a trovare il problema, e ho cercato molto.
Ci sono molti duplicati per questo, lo so, ma nessuna delle loro soluzioni mi ha aiutato (e la maggior parte di loro si riferisce alla documentazione di angularjs).
Non ho pubblicato nessun altro codice, poiché ce n'è molto, e non riesco davvero a capire quale parte del codice (diversa da index.html) possa causare problemi.
Inserirò qualsiasi altro codice se pensi che possa essere d'aiuto.
Sono davvero perso e sarei davvero grato se qualcuno potesse guidarmi verso una soluzione.
Grazie mille

+0

Potresti fornire più del markup? Anche gli altri script inclusi sono importanti! Ad esempio, le ultime versioni di jQuery [hanno abbandonato il supporto per IE 8] (http: //blog.jquery.com/2013/04/18/jquery-2-0-rilasciato /). –

risposta

4

Sembra che mi sono fatto un pò fuori di testa.
Il problema era che stavo usando alcune parole riservate, e apparentemente IE8 davvero non gli piace affatto.
Ad esempio, ho avuto un parametro denominato "class" su un oggetto, pertanto l'utilizzo di obj.class ha causato la diffusione di IE8.
La stessa di una funzione denominata "delete" (ancora una volta all'interno di un oggetto, in modo da stavo usando functionHoldingObject.delete.

sapevo parole sul riservate, solo che non la pensano che li utilizzano come parametro di un oggetto è dannoso. per risolvere questo problema, ho solo cambiato i nomi per un po ', e utilizzati obj["reservedWord"] per gli altri, entrambe le soluzioni funzionano su tutti i browser.

Un altro errore che ho trovato, era che stavo usando la funzione Array.prototype.indexOf senza sapere che IE8 doesn Non posso che supportarlo, quindi ho appena aggiunto un'implementazione (che è molto semplice)
Potresti ricevere assistenza in merito allo MDN sito.

0

Ho incontrato lo stesso problema di recente a causa della modalità di compatibilità.

cercare di forzare con:

<!--[if IE 8]><!--> <meta http-equiv="X-UA-Compatible" content="IE=8" /> <!--<![endif]--> 

Controllare anche nel tuo browser IE8 che la modalità di compatibilità non è IE7.

+0

Utilizzare "per html nella risposta anziché" e " – Daan

9

Nel caso in cui si sia utilizzato uno qualsiasi console.log() all'interno del proprio controller o servizio o fabbrica, IE-8 non caricherà affatto l'angolo. È strano.

+1

Non era il mio caso Si consiglia di utilizzare [$ log] di Angular (http://docs.angularjs.org/api/ng/service/$log servizio per questo Ma grazie per l'heads up! –

+0

@Senthil -Che è davvero vero.Grazie – pingu

+0

Questo mi ha salvato dopo ore di grattarsi la testa, grazie – DrewT