5

Sto utilizzando il routing in Angularjs per la mia SPA ma devo supportare IE7 (e IE8 in modalità di compatibilità IE7). Voglio che la cronologia del browser continui a funzionare comunque. Non mi interessa se devo usare un plugin jQuery.Supporto della cronologia di Angularjs per IE6 e IE7

+6

Gli anni '90 hanno chiamato. Vogliono che il loro href sia tornato. –

+0

@DanKanze - Purtroppo ... dove lavoro c'è un sistema interno così immerso con IE7 che non è possibile effettuare l'aggiornamento oltre a IE8 con la modalità compatibilità. –

+0

Sì, possono. Possono utilizzare IE 7/8 per l'app precedente e Chrome o Firefox per tutto il resto. A meno che non stiano bevendo il Kool-Aid di Microsoft. Le app legacy come questa sono l'unica ragione per utilizzare IE. Mai. – iconoclast

risposta

7

Ho controllato attraverso la sorgente angolare sniffer.js, location.js e browser.js per controllare il meccanismo di come funziona storia. In sostanza se il browser supporta la cronologia (ad esempio, $sniffer.history è true) viene utilizzata la cronologia, altrimenti scrive semplicemente su location.href (o locaiton.replace(url)). Controlla $browser.url(url, replace) in browser.js, riga 149 per dettagli.

Quindi, se angolare è appena iscritto a location poi un plugin jQuery come Ben Alman s' BBQ prenderanno questo evento, perché è il polling per le modifiche al location.hash. Ho avuto successo questo lavoro in IE8 (in modalità IE7) semplicemente includendo di Ben hashchange plugin (un sottoinsieme di barbecue) e poi un minimo di fuoco evento e l'evento di ascolto:

$(function() { 
    $(window).hashchange(function() { 
    // don't delete this empty handler or ie6/7 history won't work. 
    }); 
    // call hashchange on first load 
    $(window).hashchange(); 
}); 

NOTA: jQuery hashchange (e barbecue) è utilizzando deprecato $.browser.msie a riga 300, quindi utilizzare (document.documentMode != undefined) come suggerito nei commenti al post del blog di Ben.

Problemi correlati