Backbone.history:深URL不落适当支持在IE(Backbone.history: d

2019-10-17 14:59发布

在我的单页骨干的应用程序,我无法让我的长网址,以正确路由在IE中。 该嵌套多个级别的任何URL,直接加载它们时,没有收到合适的哈希fallbak。

顶级网址做工精细...

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)

但更深层次的访问网址,直接打破了页

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

更新:

这是IE9

Answer 1:

我不知道,如果你已经在过去的3小时暂存改变任何东西,但我观察到的问题是与此相关的问题

引用CSS文件时,IE不支持在基础元件的相对路径

当你的页面请求http://stage.change4cancer.org/profile/647955793 ,它就会在页面实际的HTML。 现在,无论它是否是应该重定向到#资料/ 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

这实际上又回到某种形式的另一个html页面

因为没有你的外部JS的加载,当然事情会出问题。



Answer 2:

尝试这个:

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())
}


文章来源: Backbone.history: deep urls are not falling backing properly in IE