#javascript
#javascript
Вопрос:
Я пытаюсь проверить текст и использую alert (), чтобы сообщить пользователю, когда текст недействителен. Моя единственная проблема в том, что, по крайней мере, с FF4 для меня, предупреждение не делает ничего, чтобы заблокировать их от выполнения таких действий, как кнопки назад и вперед, поэтому, если текст недействителен, они все равно могут нажать назад, и он не будет проверен.
Есть ли способ создать предупреждение, чтобы ничего нельзя было сделать с браузером, пока предупреждение не будет удалено?
Комментарии:
1. И если они отключат свой javascript, это вообще не будет иметь значения. Проверка на стороне клиента — это хорошо, но она должна дополнять проверку на стороне сервера. Мое предложение состояло бы в том, чтобы не зацикливаться на ограничении поведения пользователей на стороне клиента, просто сообщите им о проблеме. И если они не исправят это перед публикацией данных, отправьте их обратно на страницу с информативным сообщением.
2. Я бы избегал использования оповещения. Может быть лучше в PHP-подходе.
3. Предупреждения, которые блокируют браузер, очень плохи с точки зрения пользовательского интерфейса. Вот почему FF4 изменился на неблокирующие предупреждения. и я ожидаю, что некоторые другие браузеры скоро последуют этой философии.
4. Что произойдет, если ваше предупреждение будет поймано в бесконечном цикле или обработчике событий, подобном
onmousemove
? Не держите своих пользователей в плену.5. Я просто хотел способ заставить пользователя ввести что-то в поле ввода. Я, очевидно, могу запретить им оставлять его пустым при переходе вперед, но не при переходе назад, отсюда и вопрос. Брэд, похоже, все же получил его.
Ответ №1:
Вы можете привязаться к window.onbeforeunload и заставить пользователя действовать «правильным» образом, пока они не сделают это правильно.
Однако что-то подсказывает мне, что вам нужно исправить свой рабочий процесс и не пытаться обойти пользователя, делающего то, что он хотел бы (программисты всегда проигрывают).
Ответ №2:
Нет, и не должно быть. Раньше были действительно модальные оповещения, но ими злоупотребляли как сумасшедшими. То же, что и при всплывающих окнах без URL и так далее. Хорошо, что мы от них избавились.
В любом случае, как веб-пользователь, я ожидаю, что кнопка «Назад» всегда будет в безопасности и не оставит приложение в несогласованном состоянии. Вероятно, это лучший подход
Ответ №3:
Я действительно не могу придумать ничего, что было бы так важно проверить, чтобы предотвратить любые другие функциональные возможности, и вы никогда не сможете по-настоящему достичь этого на стороне клиента, и если вам действительно нужно, то вам следует установить переменную на стороне сервера, в базе данных для этого пользователя, назовем ее user_preventaction и допустим, вы установите для нее значение TRUE при загрузке страницы, которое не изменится, пока ввод, который вы хотите, не будет проверен и не будет возвращен в FALSE. Тогда любая страница, к которой пользователь пытается получить доступ, и preventaction по-прежнему имеет значение TRUE, отобразит страницу, заставляющую их проверять все, что вы считаете настолько важным, что пользователь может даже решить вернуться.
Ответ №4:
Даже если вы можете заменить окно предупреждения браузера, функциональность по-прежнему встроена в браузер, поэтому я не думаю, что вы сможете.
Было бы лучше рассмотреть альтернативные формы отображения ошибок.