Действительно ли возможно заблокировать пользователей от закрытия окна с помощью кнопки [X] выхода? Я на самом деле обеспечиваю близкую кнопку на странице для пользователей для закрытия окна. В основном то, что я пытаюсь сделать, должно вынудить пользователей заполнить форму и отправить его. Я не хочу, чтобы они закрыли окно, пока они не отправили его.
парни я действительно ценю Ваши комментарии, я не думаю о хостинге ни на каком коммерческом website.its внутренняя вещь, мы на самом деле заставляем весь штат участвовать в этом обзоре, который мы разработали...., я знаю не правильный путь, но я задавался вопросом, было ли решение проблемы, мы имеем здесь...
Взгляните на onBeforeUnload
.
Это не заставит кого-то остаться, но побудит их спросить, действительно ли они хотят уйти, что, вероятно, является лучшим кроссбраузерным решением, которым вы можете управлять. (Аналогично этому сайту, если вы попытаетесь оставить ответ в середине.)
<script language="JavaScript">
window.onbeforeunload = confirmExit;
function confirmExit() {
return "You have attempted to leave this page. Are you sure?";
}
</script>
Изменить: большинство браузеров больше не разрешают настраиваемое сообщение для onbeforeunload
.
См. Этот отчет об ошибке от 18 февраля 2016 г.
диалоговые окна onbeforeunload используются для двух вещей в современном Интернете:
1. Предотвращение непреднамеренного доступа пользователей потеря данных.
2. Обман пользователей.В попытке ограничить их использование для последних, не останавливая при этом первое, мы не будем отображать строку, предоставленную веб-страницей. Вместо этого мы собираемся использовать обычную строку.
Firefox уже делает это [...]
Что вы будете делать, когда пользователь нажмет ALT + F4 или закроет его из диспетчера задач
Почему бы вам не отслеживать, если они не завершили это в файле cookie или в базе данных, и когда они посетят в следующий раз, просто верните тот же экран ...: Кстати ... вы еще не закончили заполнять эту форму ... "
Конечно, если бы вы были здесь до доткомов бюст вы помните, порно штормы, где, если вы закрыты 1 окно 15 других бы open..so да есть код, который обнаружит закрытия окна, но если вы нажмете ALT + F4 в два раза приведет к закрытию ребенка и родителя (если он было всплывающим окном)
Это плохая практика - заставлять пользователя делать то, что он не обязательно хочет делать. Вы никогда не сможете предотвратить закрытие браузера.
Однако вы можете добиться похожего эффекта, сделав div
на текущей веб-странице, чтобы расположить его поверх остальных элементов управления, так что ваша форма будет единственным доступным элементом.
На моем $ DAYJOB мы используем gettext для I18N. Я написал плагин на xgettext.pl , который извлекает весь английский текст из таблиц базы данных и добавляет их в мастер messages.pot.
Это очень хорошо работает - переводчики имеют дело только с одним файлом при выполнении перевода - файлом po. При выполнении трансляций нет совпадений с записями базы данных.
-121--1020261-Выпуск, начинающийся в среду для не MSDN-серверов
Источник: здесь
-121--4213424-Появится диалоговое окно с запросом пользователя о том, действительно ли он хочет закрыть или остаться, с сообщением.
var message = "You have not filled out the form.";
window.onbeforeunload = function(event) {
var e = e || window.event;
if (e) {
e.returnValue = message;
}
return message;
};
Затем вы можете отменить настройку перед отправкой формы или чем-то другим с помощью
window.onbeforeunload = null;
Имейте в виду, что это чрезвычайно раздражает. Если вы пытаетесь заставить своих пользователей заполнить форму, которую они не хотят заполнять , то вы потерпите неудачу: они найдут способ закрыть окно и никогда не вернутся на ваш подлый сайт.
Что ж, вы можете использовать событие window.onclose
и вернуть false
] в обработчике событий.
function closedWin() {
confirm("close ?");
return false; /* which will not allow to close the window */
}
if(window.addEventListener) {
window.addEventListener("close", closedWin, false);
}
window.onclose = closedWin;
Код был взят с этого сайта .
С другой стороны, если они принудительно закрываются (используя диспетчер задач или что-то в этих строках), вы ничего не можете с этим поделать.
Если вы рассылаете внутренний опрос, требующий 100% -ного участия сотрудников вашей компании, то лучшим способом будет просто попросить форму отслеживать ID респондента / имя пользователя / адрес электронной почты и т. д. Примерно каждые несколько дней просто отправляйте небольшое приятное напоминание по электронной почте сотрудникам вашей организации, чтобы они прошли опрос ... вы, вероятно, даже можете автоматизировать это.