在我的单页骨干应用程序中,我无法让我的长网址在IE中正确路由。任何嵌套多个级别的网址在直接加载时都不会收到正确的哈希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
答案 0 :(得分: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是另一回事(为什么你在加载内容之后想要这样做,我不确定),但让我解释一下。
在http://stage.change4cancer.org/profile/647955793的html中,您有以下标记:
<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都没有加载,当然事情会出错。
答案 1 :(得分: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())
}