#javascript
#javascript
Вопрос:
У меня есть веб-сайт с главной страницей. Я хочу поймать пользователя, пытающегося закрыть браузер / вкладку. Когда я пытаюсь использовать onunload
тег in the body, он срабатывает не только при попытке закрыть браузер, но и при переходе на другую страницу.
Есть идеи, как перехватить только событие закрытия браузера?
Комментарии:
1. Но если я хочу кодировать только для подтверждения закрытия окна, т.Е. «да или нет», и оно не должно появляться при переходе с главной страницы, нажатии кнопки, обновлении страницы в то время, что я должен делать? можете ли вы написать какой-нибудь пример кода или логики
Ответ №1:
Это невозможно. Javascript может только определить, закрывается ли страница, на которой вы находитесь. Если бы Javascript мог определять, закрыты ли другие вкладки и окна, в которых вы находитесь, например, зная, закрыли ли вы Facebook или Flyspray, это было бы серьезной угрозой безопасности. Вот как теперь работает javascript.
Комментарии:
1. На самом деле это не то, что он пытается сделать, но в любом случае отвечает на вопрос 🙂 Обратите внимание, он не пытается обнаружить что-либо еще о других вкладках. @santosh rahangdale, событие onbeforeunload не делает разницы между обновлением, закрытием вкладки / браузера, переходом на другую страницу и т. Д. все они являются событиями выгрузки.
Ответ №2:
Я работаю с защищенным wizzard online, который будет сохранять данные в процессе, и мне нужно было определить, закрыл ли клиент вкладку и / или браузер, пока все шло нормально, пока я не нажал кнопку «Продолжить», чтобы перейти к следующему шагу, это вызвало у меня то же самоесообщение, я провел довольно много исследований по этому вопросу, и я никак не смогу игнорировать событие выгрузки, которое возникает, когда я перехожу со страницы по ссылке.
Я попытался использовать
if(window.event.clientY < 0 amp;amp; window.event.clientX < 0){
alert('holy damn! the window is closing!')
};
и некоторые другие методы, которые есть в Интернете. ни один из них не сможет обнаружить только закрытие браузера. Итак, насколько продвинулись мои исследования, нет способа сделать это.