1

在我的單頁主幹應用中,我無法讓我的更長的網址在IE中正確路由。任何嵌套多個級別的URL,直接加載它們時都不會收到正確的散列漏洞。Backbone.history:深度網址在IE中沒有正確倒退

頂級網址,做工精細...

when I load: domain.com/resource 
in IE I get: domain.com/#resource (as expected) 

導航(應用程式)正常工作...

when I click on a link to: domain.com/resource/12345 
IE sends me to: domain.com/#resource/12345 (as expected) 

但訪問更深的URL直接打破了頁

when I load: domain.com/resource/12345 
in IE I get: domain.com/resource/12345 !! this is incorrect, and the page doesn't load 

UPDATE:

這是IE9

+0

哪個IE版本? – jevakallio

+0

已更新。謝謝! – Thomas

+0

你有一個可以複製此問題的實時頁面嗎?我想看看,但我沒有一個pushState配置的服務器在手邊來試試這個。 – jevakallio

回答

0

我不知道,如果你已經在過去3小時改變任何東西在你的分期,但我觀察到的問題是涉及到這個問題

IE doesn't support relative paths in the base element when referencing CSS files

當您的頁面請求http://stage.change4cancer.org/profile/647955793時,它會爲頁面獲取實際的html。現在是否應該重定向到#profile/647955793是另一回事(爲什麼在你已經加載內容後你想這樣做,我不確定),但讓我解釋一下。

在該HTML代碼http://stage.change4cancer.org/profile/647955793您有以下標籤:

<base href="/" /> 

但IE9不會尊重標籤,除非它有一個完整的URI。因此,所有到JS,CSS等的路徑都是錯誤的。取而代之的

http://stage.change4cancer.org/js/libs/backbone-0.9.2.min.js

它的請求

http://stage.change4cancer.org/profile/js/libs/backbone-0.9.2.min.js

由於沒有任何的外接JS的加載,當然事情裏面居然返回某種

的另一個HTML頁面會出錯。

0

試試這個:

Backbone.history.start({ pushState: Modernizr.history, silent: true }); 
if(!Modernizr.history) { 
    var rootLength = Backbone.history.options.root.length; 
    var fragment = window.location.pathname.substr(rootLength); 
    var search = window.location.search; 
    Backbone.history.navigate('/#' + fragment + search, { trigger: true }); 
} else { 
    Backbone.history.loadUrl(Backbone.history.getFragment()) 
}