Предложить Пользователю перед браузером близко?

У нас есть административный портал, что наши учителя постоянно забывают скачивать свои последние инструкции PDF перед тем, чтобы выходить из системы и/или закрытием окна браузера. Я осмотрел, но не могу найти то, что я ищу.

Я хочу выполнить следующие цели:

Цель 1

Прежде чем пользователь может закрыть окно браузера, они запрашиваются, "Вы не забывали загружать свою форму?" с двумя опциями, да/нет. Если да, близко, если не, возврат к странице.

Цель 2

Прежде чем пользователь может нажать кнопку 'выхода из системы', они запрашиваются с тем же как выше.

Моя первичная обработка в очень простом коде (который не работает на браузер близко):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script type="text/javascript">
function init() {
    if (window.addEventListener) {
        window.addEventListener("beforeunload", unloadMess, false);
    } else if (window.onbeforeunload) {
        window.onbeforeunload = unloadMess;
    };
}

function unloadMess() {
    var User_Message = "[Your user message here]"
    return User_Message;
}
</script>
</head>

<body onload="init();">
     hello this is my site
</body>
</html>

РЕДАКТИРОВАНИЕ - НОВЫЕ ПРОБЛЕМЫ

Решение, предоставленное ниже работ, но также и, имеет свои собственные проблемы:

Когда пользователь нажимает на ссылку для фактической загрузки форм, страница думает, что они пытаются оставить и в свою очередь представить сообщение об ошибке им! Также - я хотел бы за одно событие или другого произойти, но не обязательно оба. Т.е. они нажимают кнопку 'выхода из системы', и им дарят событие OnClick, ЗАТЕМ подсказка браузера. Какие-либо идеи?

18
задан ROMANIA_engineer 10 December 2015 в 13:59
поделиться

4 ответа

Обновление 2017 года

Все современные браузеры больше не поддерживают пользовательские сообщения.

window.onbeforeunload = function(evt) {
   return true;
}

Это для закрытия вкладки:

window.onbeforeunload = function(evt) {
    var message = 'Did you remember to download your form?';
    if (typeof evt == 'undefined') {
        evt = window.event;
    }
    if (evt) {
        evt.returnValue = message;
    }

    return message;
}

и используйте событие onClick для кнопки выхода:

onClick="return confirm('Did you remember to download your form?');"
25
ответ дан 30 November 2019 в 08:15
поделиться

Pointy is правильно насчет событий закрытия браузера - представьте, могут ли злые сайты помешать вам закрыть их окна ?? Таким образом, вы не можете предотвратить их закрытие вашего сайта, но вы можете сделать предупреждение.

Что касается кнопки выхода, это гораздо проще:

<a href="logout.html" onClick="return confirm('Did you remember to download your form?');">Logout</a>
0
ответ дан 30 November 2019 в 08:15
поделиться

Я думаю, что это может быть частью вашей проблемы:

else if(window.onbeforeunload) {
  window.onbeforeunload = unloadMess;
};

Этот тест в операторе "if" будет истинным, только если уже есть функция-обработчик. Этот тест не означает "есть ли у объекта окна свойство 'onbeforeunload'?". Он означает: "свойство 'onbeforeunload' окна в данный момент не равно null?".

Я думаю, что было бы безопасно просто установить "onbeforeunload" напрямую, для любого браузера.

2
ответ дан 30 November 2019 в 08:15
поделиться

Вы не можете предупреждать или подобные вещи в onbeforeunload , вы не можете просто вернуть false, чтобы пользователь не покидал страницу, как в случае с другими событиями, такими как onclick . Это позволит сделать сайт невозможным покинуть его.

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

1
ответ дан 30 November 2019 в 08:15
поделиться
Другие вопросы по тегам:

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