【问题标题】:URL bar not updated in Chrome after Backbone routing主干路由后,Chrome 中的 URL 栏未更新
【发布时间】:2015-03-25 13:27:45
【问题描述】:

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

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

这很好用,“开始”路线被执行,正确的结果显示在所有浏览器(包括 Chrome)中。但是在 Chrome 中,url 栏不会更新为新的 url(例如 ../something#start),而是打开窗口的原始 url 保留在地址栏中。

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

任何意见表示赞赏!

【问题讨论】:

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


    【解决方案1】:

    您没有尝试直接从即将关闭的选项卡中调用路由器,而是尝试触发 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});
    });
    

    如果有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2013-06-15
      • 2011-04-02
      相关资源
      最近更新 更多