2013-11-14 2 views
2

Я искал всюду, и я не могу найти точное решение, которое я ищу. Мне нужен код javascript, который, когда пользователь пытается выйти из страницы, появляется окно предупреждения с параметрами «остаться на странице» или «оставить страницу». Если пользователь остается, он перенаправляет их на другую страницу, и если они выбирают, оставьте его. Нечто похожее на всплеск выхода. Я знаю, что это плохая практика, но это то, чего хотят клиенты. Любая помощь будет оценена. Заранее спасибо за вашу помощь.Javascript предупреждает, что перенаправляет, если пользователь нажимает кнопку на странице

+1

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

+0

Dupe: http://stackoverflow.com/questions/2663728/ how-to-display-onbeforeunload-dialog-when-соответствующее –

+0

Это только для окна предупреждения, мне нужно перенаправление, если они выбирают пребывание на странице. – Joax23

ответ

3

Это Hacky, но будет выполнять работу

var triedToLeave = false; 
function onBeforeUnload(){ 
    triedToLeave = true; 
    return "you can put your own message here"; 
} 
setInterval(function(){ 
    if(triedToLeave){ 
     window.removeEventListener("beforeunload", onBeforeUnload, false); 
     document.location.href = "http://stackoverflow.com/"; 
    } 
}, 2000); 
window.addEventListener("beforeunload", onBeforeUnload, false); 

EDIT фиксированная функция

+1

даже при том, что не все браузеры даже позволяют ваше собственное сообщение больше – charlietfl

+0

А как насчет перенаправления? – Joax23

+0

Исправлен ответ, теперь он должен работать – gotofritz

1

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

var notScriptLeaving = true; 
window.onbeforeunload = function() { 
    if (notScriptLeaving) { 
     notScriptLeaving = false; 
     window.location = 'http://www.example.com/'; //Splash page url goes here 
     return "Are you sure you want to navigate away?"; 
    } 
} 
Смежные вопросы