调用history.back()而不触发'popstate'

问题描述 投票:0回答:1

有没有办法在不触发window.history.back();的情况下调用this.getWindow().on('popstate', this.handleBrowserButtons.bind(this));

javascript html5 history browser-history popstate
1个回答
0
投票

不,window.history.backwindow.history.go总会引发popstate事件。

实际上,这是事件实际触发的唯一时间,因此您可以完全删除popstate事件处理程序,如果您不希望在后退/前进导航中发生这种情况,请使用其他内容。


0
投票

由于history.back和history.go总是调用一个注册的onpopstate事件,你可以使onpopstate事件成为关闭模态的主要方式。当我做类似的事情并且运作良好时,我这样做了。

为了使其与不支持pushstate的浏览器向后兼容,您可以检查支持并在没有支持时直接调用closeModal。

所以close模态按钮代码是这样的:

if (history.pushState) {
    // Your popstate event handler will be called, which calls closeModal()
    history.back();
}
else {
    // No popstate event handler registered, so call closeModal() directly
    closeModal();
}
© www.soinside.com 2019 - 2024. All rights reserved.