是否可以在不触发window.history.back();
的情况下调用this.getWindow().on('popstate', this.handleBrowserButtons.bind(this));
?
答案 0 :(得分:0)
否,window.history.back
和window.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();
}