Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

Посмотрите 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 уже делает это [...]

Ответ 2

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

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

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

Ответ 3

Если вы не хотите отображать всплывающее окно для всего события, вы можете добавить такие условия, как

window.onbeforeunload = confirmExit;
    function confirmExit() {
        if (isAnyTaskInProgress) {
           return "Some task is in progress. Are you sure, you want to close?";
        }
    }

Это отлично работает для меня

Ответ 4

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

Ответ 5

Появится диалоговое окно с запросом пользователя, действительно ли он хочет закрыть или остаться с сообщением.

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;

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

Ответ 6

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

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

Ответ 7

Как насчет этого?

function internalHandler(e) {
    return "Please don't leave our page ever!";
}

if (window.addEventListener) {
    window.addEventListener('beforeunload', internalHandler, true);
} else if (window.attachEvent) {
    window.attachEvent('onbeforeunload', internalHandler);
}

Ответ 8

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

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

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