当用户尝试离开单页应用中的某个视图时,我正试图实现一些导航阻力。基本上我想在散列更改之前调用confirm(msg)
的内容。我希望它的行为与onbeforeunload
类似。
我发现了这个问题并尝试了建议的答案: How can i execute code before hashchange
对上述问题的一个(未接受的)答案的问题是它正在使用$(window).on('hashchange',...)
,然后当哈希值发生变化时,当你已经在新视图上时它会确认 并尝试导航回到上一页。这不是一个好的用户体验,除此之外,如果您在该页面上有表单或正在保存,您将丢失导航之前的所有状态信息。
我尝试更改他的答案以使用$(window).before('hashchange',...)
,但所有这一切都在我脸上爆炸,带有一个奇怪的,看似无关的错误(请参阅下面的错误文字)。在散列实际更改之前,我还没有看到任何关于如何拦截hashchange
事件的内容。有人有什么建议吗?
错误消息文字:
Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined
修改
好吧,显然我试图滥用.before
所以无视这一部分。我仍然需要在hashchange
事件作用于页面