Чтобы удалить слушателя, вы должны передать саму функцию слушателя removeEventListener()
.
Другая проблема в вашем коде состоит в том, что при использовании if (true)
вы никогда не достигнетеelse
блок, который удаляет слушателя.То, что вы, вероятно, захотите сделать, это иметь булеву переменную вне слушателя, которую вы изменяете при первом вызове слушателя.
var backButtonPrevented = false;
history.pushState(null, document.title, location.href);
function popStateListener(event) {
if (backButtonPrevented === false){
history.pushState(null, document.title, location.href);
console.log('Back Button Prevented');
backButtonPrevented = true;
} else {
window.removeEventListener('popstate', popStateListener);
history.back();
}
}
window.addEventListener('popstate', popStateListener);