我目前正在使用Backbone.Marionette创建单页应用程序,在其中一个视图中,用户可以使用未保存的更改导航离开。我可以控制一些事件,比如视图内的按钮和菜单选项,会带走用户,但有些其他事件需要操纵Backbone.Router或直接使用DOM事件。
我已经尝试侦听beforeunload(不起作用,因为应用程序仍在加载)和hashchange(不起作用,因为无法阻止浏览器导航)。这些解决方案(1,2,3)在这种情况下不起作用,Javascript从未卸载。
改变 Backbone.Router 似乎是最好的选择,但由于它的初始化方式,我认为引入此功能是不可能的,或者至少我找不到实现的方法。例如,这种解决方案 并不起作用,因为
我已经尝试侦听beforeunload(不起作用,因为应用程序仍在加载)和hashchange(不起作用,因为无法阻止浏览器导航)。这些解决方案(1,2,3)在这种情况下不起作用,Javascript从未卸载。
改变 Backbone.Router 似乎是最好的选择,但由于它的初始化方式,我认为引入此功能是不可能的,或者至少我找不到实现的方法。例如,这种解决方案 并不起作用,因为
hashchange
不可取消(无法调用 stopPropagation),而 另一种解决方案 则不起作用,因为 Backbone.Router 对象上未定义 navigate
。您有什么建议吗?