有没有办法在不触发window.history.back();
的情况下调用this.getWindow().on('popstate', this.handleBrowserButtons.bind(this));
?
不,window.history.back
和window.history.go
总会引发popstate事件。
实际上,这是事件实际触发的唯一时间,因此您可以完全删除popstate事件处理程序,如果您不希望在后退/前进导航中发生这种情况,请使用其他内容。
由于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();
}