Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не позволить уйти со страницы не заполнив поле. (https://javascript.ru/forum/misc/7278-ne-pozvolit-ujjti-so-stranicy-ne-zapolniv-pole.html)

Alex VoDevil 24.01.2010 09:33

Не позволить уйти со страницы не заполнив поле.
 
Доброго времени суток, уважаемые.
JS я знаю не плохо и по професии я программист. Разжевывать ничего не прошу. Проблема такая: Есть страничка настроек и нужно не позволить юзеру уйти с нее пока он не введет валидный email. Проверка на валидность не проблема. Проблема в том что на страничке много линков, на стороне сервера она собирается из хэдэра-меню-контента-футера (т.е. есть куски разметки которые используются др. страницами) и проект уже на стадии дебага. Все это делает прикрепление функции проверки к каждому линку не возможным. Есть ли в JS событие ухода со странички на которое я мог бы повесить функцию которая проверит валидность email и если что, не отпустит юзера? И опять же, как юзера не отпустить? Вернуть false из функции привязанной к этому событию?

Niar 24.01.2010 09:46

То есть вы хотите чтобы юзер просто не могу закрыть вашу страничку пока не введет свой мэил?

Tim 24.01.2010 11:12

Можно попробовать следить за координатами курсора. И когда он уходит выше самой страницы, т.е. юзер танется к кнопочке "X", делать confirm это заставит его немного изменить свои планы

Niar 24.01.2010 11:18

Вы видно забыли про ctrl+alt+delete. И после этого он 100% на ваш сайт не зайдёт

Octane 24.01.2010 11:29

В новой Opera 10.50 диалоговые окна вообще не препятствуют переключению и закрытию вкладок, в некоторых браузерах есть галочка для предотвращения последующего появления диалогов.

Событие unload остановить нельзя:
Цитата:

Сообщение от W3C
unload
The unload event occurs when the DOM implementation removes a document from a window or frame. This event is valid for BODY and FRAMESET elements.
Bubbles: No
Cancelable: No
Context Info: None

http://www.w3.org/TR/DOM-Level-2-Events/events.html
так что затея не удастся, разработчики стараются защитить пользователей от таких вот гениальных идей программистов.

Мараторий 24.01.2010 12:01

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

Tim 24.01.2010 12:34

Цитата:

И после этого он 100% на ваш сайт не зайдёт
Стопицотпроцентно. Я подобные мега-ресурсы сразу же средствами роутера баню и всё - прости прощай

B@rmaley.e><e 24.01.2010 14:10

onbeforeunload

Alex VoDevil 24.01.2010 16:34

Речь идет не о "мега-ресурсе", и не о архиве порнухи, как вы наверное могли подумать :) Речь о многопользовательской системе управления контентом на базе облачных вычислений. Закрытие окна браузера (а уж темболее снятие процесса) вобщем то не рассматривается, нужна просто минимальная защита на дурака. Важно не дать пользователю уйти на другую страницу админки не заполнив поле email (ибо иначе теряется возможность восстановления пароля).

2 B@rmaley.e><e : Да, это наверное именно то что мне нужно, как дойду до решения этой проблемы - копну глубже, спасибо вам.

Tim 24.01.2010 17:46

Я не понимаю зачем это вообще. Есть две ситуации когда нужно менять значение e-mail'а:

1. Когда юзер регается
2. При смене е-mail'а на новый

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

К этому уже все привыкли. Зачем придумывать какую то ерунду. А если JS в браузере выключен, то что делать?


Часовой пояс GMT +3, время: 06:16.