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

时间:2019-03-26 14:41:05

标签: javascript html5 history browser-history popstate

是否可以在不触发window.history.back();的情况下调用this.getWindow().on('popstate', this.handleBrowserButtons.bind(this));

2 个答案:

答案 0 :(得分:0)

否,window.history.backwindow.history.go将始终触发popstate事件。

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

答案 1 :(得分:0)

由于history.back和history.go总是调用已注册的onpopstate事件,因此您可以将onpopstate事件作为关闭模式的主要方式。我在做类似的事情时就这样做了,而且效果很好。

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

因此,关闭模式按钮代码将如下所示:

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();
}