Короче говоря, нажатия кнопок "Назад" в этом сценарии являются постоянной проблемой в Интернете в целом.Тем не менее, пара идей.Идея первая: используйте событие onbeforeunload в окне:
window.addEventListener('beforeunload', function(e){
e.preventDefault();
e.returnValue = 'Hitting the back button will make you start over!';
return e.returnValue;
});
Не все браузеры будут отображать правильный текст диалога, но установка returnValue заставит все браузеры запросить пользователя, прежде чем фактически заставить все перезагрузиться, чтолучше чем ничегоК сожалению, он также сделает это при закрытии / обновлении окна, хотя вы можете удалить слушателя, как только закончите.
Идея вторая: установить хеш.
var ignoreNextHashChange;
window.onhashchange = function(){
if (ignoreNextHashChange)
ignoreNextHashChange = false;
else
alert('Whoa there--using the back button will break the process!');
}
Затем на каждомЭтап вашего кода делает что-то вроде:
ignoreNextHashChange = true;
window.location.hash = '#hashForThisStage';
Опять же, не на 100% идеально, но это заставит кнопку возврата откатывать хэши и запускать обнаруживаемое событие, а не прерывать весь поток.
Ура!