5

我正在使用路由Angularjs爲我的SPA,但我必須支持IE7(和IE8在IE7兼容模式下)。我希望瀏覽器歷史記錄仍然可以工作。我不在乎是否必須使用jQuery插件。Angularjs歷史支持IE6和IE7

+6

90年代叫。他們希望他們的href回來。 –

+0

@DanKanze - 可悲的是,在我工作的地方,有一個內部系統沉浸在IE7中,他們無法通過兼容模式升級到IE8。 –

+0

是的,他們可以。他們可以將IE 7/8用於舊版應用,Chrome或Firefox則可用於其他應用。除非他們喝微軟的Kool-Aid。像這樣的傳統應用程序是使用IE的唯一原因。永遠。 – iconoclast

回答

7

我通過角源檢查sniffer.jslocation.jsbrowser.js檢查歷史是如何工作的機制。實質上,如果瀏覽器支持歷史記錄(即$sniffer.history爲真),則使用歷史api,否則它僅寫入location.href(或locaiton.replace(url))。查看$browser.url(url, replace)browser.js,第149行的詳情。

所以,如果角只是寫location然後一個jQuery插件,像Ben AlmanBBQ將拿起這個事件,因爲它是輪詢改變的location.hash。

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

注:我已經成功地通過簡單地包括本的hashchange plugin(BBQ的一個子集),然後最小事件火災和事件監聽得到了在IE8(在IE7模式)這個工作的jQuery hashchange(和BBQ)被使用不贊成使用$.browser.msie行300因此,而不是使用(document.documentMode != undefined)建議在本的博客文章的評論。