Существует "куча" больших ответов выше о том, что дополнительные методы позволяют Вам сделать.
Мой короткий ответ - они почти избавляют от необходимости фабрики.
я просто укажу, что они не новое понятие, и одна из самых больших проверок их - то, что они - уничтожающая функция в Objective C ( категории ). Они добавляют такую гибкость к основанной на платформе разработке, что NeXT имел NSA и Уолл-стрит финансовые разработчики моделей как крупные пользователи.
REALbasic также реализует их, поскольку расширяет методы , и они имели подобное применение, там упрощающее разработку.
Событие onbeforeunload должно возвращать строку (не равную false), браузер будет включать эту строку в собственное сообщение, отображаемое пользователю.
window.onbeforeunload = function(){
location.assign('http://www.google.com');
return "go to google instead?";
}
Однако будет очень сложно сформулировать ваше сообщение таким образом, чтобы пользователь мог понять, что делать. И я не уверен, что это надежно в каждом браузере, я просто попробовал это в Chrome, это сработало, но у меня была вкладка, которую я не мог закрыть! К счастью, мне удалось убить его через диспетчер задач Chrome.
Если пользователь пытается закрыть браузер, то его намерения довольно ясны; он ожидает, что браузер закроется. Предотвратить это или вызвать что-либо еще между нажатием кнопки «закрыть» и закрытием браузера - это просто плохая идея, ИМО. Есть ли для этого особая причина? Я имею в виду, что когда я нажимаю кнопку «закрыть», я ожидаю, что браузер закроется, и если что-то еще произойдет, меня это будет очень раздражать. Я думаю, что веду себя достаточно разумно. Я? Кто знает такие вещи.
Почему бы вам не попытаться убедить пользователя посетить другую страницу менее навязчивым способом? Как со ссылкой или баннером?
Простой ответ - нет. Если бы браузеры позволяли вам делать больше с событиями onbeforeunload / onunload, это могло быть использовано кем угодно злонамеренно.