我有以下代码检查pushstate并在不支持时降级为hashbang(IE9):
if(Backbone.history && !Backbone.History.started) {
if(!(window.history && history.pushState)) {
Backbone.history.start({ pushState: false, silent: true});
var fragment = window.location.pathname.substr(
Backbone.history.options.root.length);
var search = window.location.search;
Backbone.history.navigate(fragment + search, { trigger: true });
}
else {
Backbone.history.start({ pushState: true });
}
}
它在功能上有效,但URL转换自:
http://dev.zwoop.be/home?page=1
到
http://dev.zwoop.be/home?page=1#home?page=1
看起来很难看 我正在寻找一个简单的修复方法,用hashtag替换主机名后面的整个片段。
答案 0 :(得分:1)
尝试替换
Backbone.history.navigate(fragment + search, { trigger: true });
通过
var modified = (fragment + search).replace(/([^\/]*)(#[^#]*)$/g, '$2');
Backbone.history.navigate(modified, { trigger: true });
它会将http://dev.zwoop.be/home?page=1#home?page=1
转换为http://dev.zwoop.be/#home?page=1