Backbone history pushstate to hashtag IE9

时间:2015-07-12 19:14:57

标签: javascript backbone.js

我有以下代码检查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替换主机名后面的整个片段。

1 个答案:

答案 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