FireFox не регистрирует взаимодействие с пользователем при нажатии на раскрывающийся список - PullRequest
0 голосов
/ 25 сентября 2019

Я использую onbeforeunload, чтобы предупредить пользователя о несохраненных изменениях перед существующей страницей.

О onbeforeunload, согласно MDN

Некоторыереализации показывают только диалоговое окно, если кадр или любой встроенный кадр получает жест пользователя или взаимодействие с пользователем.

FireFox реализовал этот , используя флаг mUserHasInteracted, который регистрируется всобытие мыши или клавиатуры.

Однако, похоже, эта проверка не работает для нажатия на раскрывающийся список?Если вы нажмете только на выпадающий список и перезагрузите страницу, ничего не произойдет.Но если вы щелкнете что-нибудь еще на этой странице, а затем измените раскрывающийся список, перед перезагрузкой страницы появится предупреждение.Chrome всегда показывает предупреждение.

Может ли это быть ошибкой?Есть ли обходной путь для того, что я пытаюсь сделать?

Пример:

Редактировать: вам нужно скопировать код и запустить его в html-файле, чтобы показать проблему.хм ..

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script>
var mChanged = false;
window.onbeforeunload = Form_BeforeUnLoad;
function Form_BeforeUnLoad(e) {
   if (mChanged)
      return "ha";   // This triggers a confirmation box
}
function changed(){
	mChanged = true;
    window.location.reload();
}
</script>
</head>
<body>
<p>onbeforeunload in FireFox and Chrome checks for user interaction before firing an exit warning.</p>
<p>In FireFox, Click only on the dropdown list does not register an user interaction?</p>
<p>Only if you first click on anywhere else on this page, or key press, an user interaction is registered.</p>
<select onchange="changed();">
<option>1 chagne to reload page</option>
<option>2 chagne to reload page</option>
</select>
</body>
</html>
...