как заблокировать пользователей от закрытия окна в JavaScript?

Действительно ли возможно заблокировать пользователей от закрытия окна с помощью кнопки [X] выхода? Я на самом деле обеспечиваю близкую кнопку на странице для пользователей для закрытия окна. В основном то, что я пытаюсь сделать, должно вынудить пользователей заполнить форму и отправить его. Я не хочу, чтобы они закрыли окно, пока они не отправили его.

парни я действительно ценю Ваши комментарии, я не думаю о хостинге ни на каком коммерческом website.its внутренняя вещь, мы на самом деле заставляем весь штат участвовать в этом обзоре, который мы разработали...., я знаю не правильный путь, но я задавался вопросом, было ли решение проблемы, мы имеем здесь...

46
задан manraj82 9 February 2010 в 15:13
поделиться

6 ответов

Взгляните на 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 уже делает это [...]

95
ответ дан 26 November 2019 в 20:12
поделиться

Что вы будете делать, когда пользователь нажмет ALT + F4 или закроет его из диспетчера задач

Почему бы вам не отслеживать, если они не завершили это в файле cookie или в базе данных, и когда они посетят в следующий раз, просто верните тот же экран ...: Кстати ... вы еще не закончили заполнять эту форму ... "

Конечно, если бы вы были здесь до доткомов бюст вы помните, порно штормы, где, если вы закрыты 1 окно 15 других бы open..so да есть код, который обнаружит закрытия окна, но если вы нажмете ALT + F4 в два раза приведет к закрытию ребенка и родителя (если он было всплывающим окном)

8
ответ дан 26 November 2019 в 20:12
поделиться

Это плохая практика - заставлять пользователя делать то, что он не обязательно хочет делать. Вы никогда не сможете предотвратить закрытие браузера.

Однако вы можете добиться похожего эффекта, сделав div на текущей веб-странице, чтобы расположить его поверх остальных элементов управления, так что ваша форма будет единственным доступным элементом.

2
ответ дан 26 November 2019 в 20:12
поделиться

На моем $ 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;

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

3
ответ дан 26 November 2019 в 20:12
поделиться

Что ж, вы можете использовать событие 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;

Код был взят с этого сайта .

С другой стороны, если они принудительно закрываются (используя диспетчер задач или что-то в этих строках), вы ничего не можете с этим поделать.

0
ответ дан 26 November 2019 в 20:12
поделиться

Если вы рассылаете внутренний опрос, требующий 100% -ного участия сотрудников вашей компании, то лучшим способом будет просто попросить форму отслеживать ID респондента / имя пользователя / адрес электронной почты и т. д. Примерно каждые несколько дней просто отправляйте небольшое приятное напоминание по электронной почте сотрудникам вашей организации, чтобы они прошли опрос ... вы, вероятно, даже можете автоматизировать это.

2
ответ дан 26 November 2019 в 20:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: