Есть ли способ захватить, нажал ли пользователь OK или ОТМЕНА?Захват ответа пользователя при использовании window.onbeforeunload
мне нужно сделать что-то только если пользователь покидает страницу ....
Есть ли способ захватить, нажал ли пользователь OK или ОТМЕНА?Захват ответа пользователя при использовании window.onbeforeunload
мне нужно сделать что-то только если пользователь покидает страницу ....
Нет, браузеры позволяют указать только текст в окне предупреждения, но никоим образом не поймать результат.
oh great, эта функция много используется тогда (сарказм). переход на onunload – sarsnake
Либо это совершенно неправильно, либо я схожу с ума. Я знаю, что можно показать диалог подтверждения при выгрузке; этот сайт делает это, если вы нажмете Назад при редактировании сообщения. – iandisme
@gnomixa вы шутите? Я * рад * браузеры не дают этой возможности сценариям. –
Вот решение, которое я использую в ситуации, когда мне нужно что-то сделать (например, очистить сеанс) ТОЛЬКО, когда пользователь переходит со страницы.
У меня есть 2 глобальных ВАР
var clearSession = true;
var confirmExit = true;
window.onbeforeunload = function() { return confirmExit(); }
window.onunload = function() { return clearSession(); }
function confirmExit() {
if (needToConfirm == true) {
return "exit page?";
}
}
function clearSession() {
if (clearSession == true) {
alert("Killing the session on the server!!!");
PageMethods.ClearSession();
}
}
Тогда, конечно, на каждой странице нажмите кнопку/кнопка/выпадающий список и т.д. ... Вы должны убедиться, что указанные выше глобальные переменные устанавливаются в ложь.
Надеюсь, это поможет кому-то.
Вы можете использовать один setTimeout для проверки.
window.onbeforeunload = function() {
if (needToConfirm) {
setTimeout(function() {
alert('User still is on the page');
}, 0);
return 'Are you sure you want to leave?';
}
};
В основном, функциональные блоки onbeforeunload выполнение и тайм-аут будет выполняться только тогда, когда пользователь по-прежнему на этой странице. 0 миллисекунд только для того, чтобы положить его в нижнюю часть очереди выполнения.
Это противоречит тому, что было задано в вопросе. Вопрос был (перефразирован) «Как я могу заставить свой код действовать, когда пользователь решает * оставить страницу». Код в вашем ответе действует (вызывает предупреждение), когда пользователь * остается * на странице. Я уверен, что вы можете исправить код, чтобы сделать то, что на самом деле задает вопрос, но тогда, что бы этот метод обеспечил, что лучше, чем метод, предложенный [sarsnake] (http://stackoverflow.com/a/ 2103974/1906307)? – Louis
Это программный трюк или, скорее, обходной путь, который вы можете попробовать. Я не нашел «предоставленных javascript» способов по умолчанию
У меня есть веб-страница (она имеет форму в ней), сидящую на локальной системе, которая должна быть защищена от неавторизованных пользователей от ввода каких-либо входов в нее ,
Я создал функцию JavaScript, которая загружается вместе с загрузкой главной страницы.
, как показано ниже
<script src="./resources/brazil-uam-all-javascript.js"></script>
</head>
<body id="uam_gui" onload="authenticate2();">
<div id="UAM_tool">
ТЕПЕРЬ JAVASCRIPT ФУНКЦИЯ
Пользователь должен ввести значение при запросе с диалоговым окном. Если пользователь не вводит какое-либо значение и просто пытается обойти его, нажав ОК или ОТМЕНА или используя клавишу ESC или кнопку «Закрыть», чтобы избежать проверки подлинности, страница будет возвращаться с той же подсказкой. Здесь я косвенно фиксирую ответ пользователя. Надеюсь, это поможет вашему требованию.
function authenticate2() {
var prompt_for_the_magic_number = prompt("Enter Your M A G I C N U M B E R ::: ", "");
if (prompt_for_the_magic_number === true)
{
if (prompt_for_the_magic_number.length === 0)
{
alert("You are supposed to ENTER A VALUE");
location.reload();
}
else
{
if (prompt_for_the_magic_number.length > 4)
{
alert("You are supposed to ENTER ONLY 4 DIGITS");
location.reload();
}
esle
{
//some code to allow access based on a logic
}
}
}
else
{
alert("You are supposed to ENTER 4 DIGITS");
location.reload();
}
}
Насколько я знаю, ты (до сих пор, в 2014 году) должны предположить, что если window.onunload обжигают, затем они ответили ОК на onbeforeunload вопрос. Я надеялся на что-то гораздо более чистое, но еще не нашел его. – Patrick