5

Ich verwende Routing in Angularjs für meine SPA, aber ich muss IE7 (und IE8 in IE7 Kompatibilitätsmodus) zu unterstützen. Ich möchte, dass der Browserverlauf trotzdem funktioniert. Es ist mir egal, ob ich ein jQuery-Plugin verwenden muss.Angularjs Geschichte Unterstützung für IE6 und IE7

+6

Die 90er Jahre genannt. Sie wollen ihre href zurück. –

+0

@DanKanze - Leider .. wo ich arbeite gibt es ein internes System so eingetaucht mit IE7, dass sie nicht über IE8 mit Kompatibilitätsmodus aktualisieren können. –

+0

Ja, sie können. Sie können IE 7/8 für die Legacy-App und Chrome oder Firefox für alles andere verwenden. Es sei denn, sie trinken Microsofts Kool-Aid. Legacy-Apps wie diese sind der einzige Grund, IE zu verwenden. Je. – iconoclast

Antwort

7

ich durch die Winkelquelle geprüft sniffer.js, location.js und browser.js die Mechanik, wie die Geschichte zu überprüfen, funktioniert. Im Wesentlichen, wenn der Browser Verlauf unterstützt (d. H. $sniffer.history ist wahr), wird history api verwendet, andernfalls wird einfach in location.href (oder locaiton.replace(url)) geschrieben. Check out $browser.url(url, replace) in browser.js, Linie 149 für Details. So

, wenn Winkel ist nur location Schreiben dann ein jQuery-Plugin wie Ben Alman ‚s BBQ wird diese Veranstaltung abholen, weil es Polling ist für Änderungen an location.hash. Ich habe erfolgreich diese Arbeit in IE8 (in IE7-Modus) bekam, indem Sie einfach mit Bens hashchange plugin (eine Untergruppe von BBQ) und dann ein minimales Ereignis Feuer und Ereignis hören:

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

Hinweis: jQuery hashchange (und BBQ) ist mit veraltet $.browser.msie um Linie 300 so stattdessen (document.documentMode != undefined) wie in den Kommentaren zu Ben's Blog-Post vorgeschlagen.