В отличие от других методов, представленных здесь, этот бит кода не заставляет браузер отображать предупреждение, спрашивающее пользователя, хочет ли он выйти; вместо этого он использует четную природу DOM для перенаправления обратно на текущую страницу (и, таким образом, отменяет навигацию), прежде чем браузер сможет выгружать ее из памяти.
Поскольку он работает путем короткого замыкания в навигации, его нельзя использовать для предотвращения закрытия страницы; тем не менее, его можно использовать для отключения очистки кадра.
(function () {
var location = window.document.location;
var preventNavigation = function () {
var originalHashValue = location.hash;
window.setTimeout(function () {
location.hash = 'preventNavigation' + ~~ (9999 * Math.random());
location.hash = originalHashValue;
}, 0);
};
window.addEventListener('beforeunload', preventNavigation, false);
window.addEventListener('unload', preventNavigation, false);
})();
Отказ от ответственности: Вы никогда не должны этого делать. Если на странице есть код для удаления фрейма, пожалуйста, уважайте пожелания автора.