我有一个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中实现这种行为呢?
任何意见都赞赏!
答案 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});
});
如果有帮助,请告诉我。