innerHTML имеет побочные эффекты (как разъединение существующих узлов DOM и перерендеринг, который мог бы быть тяжелым). Нужно знать об этих эффектах. И любой поддерживающий код должен будет остерегаться этого, innerHTML используется, или они могли бы столкнуться со странными ошибками.
onbeforeunload
- это тот, который вам нужен; ваша функция "должна присвоить строковое значение свойству returnValue объекта Event и вернуть ту же строку" . Дополнительные сведения см. В документации Microsoft и Mozilla .
Возвращаемая вами строка будет использоваться браузером для представления пользователю настраиваемого окна подтверждения, позволяющего отказаться от оставайтесь там, если они того пожелают. Это необходимо сделать таким образом, чтобы предотвратить вредоносные сценарии, вызывающие атаку типа "отказ в доступе к браузеру".
Try using e.preventDefault()
instead of returning false. 'e' would be the first argument to your unload callback.
window.onbeforeunload = function() {
if (warning) {
return 'You have made changes on this page that you have not yet confirmed.
If you navigate away from this page you will loose your unsaved changes';
}
}
не поддерживается в Chrome, Safari и Opera