У меня есть страница на моем сайте для ввода некоторых значений.Они могут быть сохранены и изменены позже.Я хочу, чтобы подсказка появлялась, когда пользователь пытается покинуть страницу, но только при наличии несохраненных данных.У меня есть код, чтобы определить, если значение сохраняется или не работает нормально.В функции, которую я назначаю window.onBeforeUnload
, она должна либо вернуть строку, если есть несохраненное значение, либо ничего, если ничего не было введено / все сохранено.Однако в Firefox и Internet Explore появляется предупреждение о несохраненных изменениях, даже если функция ничего не возвращает (что будет неопределенным).Хром отлично работает.
Я попытался вместо этого прикрепить событие к окну через addEventListener
, и тот же результат был получен.Я также удалил evt.preventDefault()
и evt.stopPropagation()
, и он все еще появляется.Я попытался установить evt.returnValue
на ноль и delete evt['returnValue']
, и он все еще появляется.
Код выглядит так:
componentDidMount() {
window.onbeforeunload = this.warnUnsaved;
}
warnUnsavedRecords = (evt) => {
if (evt) {
evt.preventDefault();
evt.stopPropagation();
}
if (this._unsaved) {
return "There are unsaved records.";
}
return;
}
Даже добавление console.log
доказывает, что оно достигаетreturn
и все же это все еще происходит.