Backbone路由后,Chrome栏中未更新URL栏

时间:2015-03-25 13:27:46

标签: google-chrome backbone.js backbone-routing

我有一个Backbone应用程序,它一度在浏览器中打开一个新选项卡。在新选项卡中执行完成后,将触发javascript(在该新选项卡中)以在开启窗口中触发路由。 Javascript代码如下所示:

window.onunload  = window.onbeforeunload = function(e){
                    opener.router.navigate("start",{trigger: true});
                };
window.close();

这很有效,“开始”#39;执行路线并在所有浏览器(包括Chrome)中显示正确的结果。但在Chrome中,网址栏未使用新网址更新(例如../something#start),而是打开窗口的原始网址仍保留在地址栏中。

在IE和Firefox中,网址栏显示正确的网址。有没有办法在Chrome中实现这种行为呢?

任何意见都赞赏!

1 个答案:

答案 0 :(得分:0)

您是否尝试直接从即将关闭的选项卡调用路由器,而不是尝试触发Backbone事件(“开启窗口”将会侦听)?

所以改变:

window.onunload  = window.onbeforeunload = function(e){
    opener.router.navigate("start",{trigger: true});
};
window.close();

为:

window.onunload  = window.onbeforeunload = function(e){
    Backbone.trigger('routeChange');
};
window.close();

并在“开启窗口”视图中包含一个routeChange事件的监听器,其中包含一个执行router.navigate()的回调函数:

opener.listenTo(Backbone, 'routeChange', function(e) {
    opener.router.navigate('start',{trigger: true});
});

如果有帮助,请告诉我。