2015-08-11 2 views
1

Я написал код, который должен запускать диалоговое окно подтверждения, когда пользователь покидает страницу. Если пользователь предоставляет подтверждение, должно появиться всплывающее окно; иначе это не должно. Однако бит onbeforeunload не срабатывает - я не понимаю, почему. Как это очевидно, я как бы новичок в JavaScript.проблема с onbeforeunload в сочетании с подтверждением

window.onbeforeunload = function() { 
    if (confirm("Would you like to take a short survey?")) { 
     w = 1000; 
     h = 1000; 
     var left = (screen.width/2)-(w/2); 
     var top = (screen.height/2)-(h/2); 
     window.open('http://www.google.com','toolbar=0,resizable = 1, scrollbars = 1, width='+w+',height='+h+', top ='+top+', left='+left); 
    } 
} 
+1

Это не значит, что 'onbeforeunload' не был запущен, некоторые браузеры [блокировать все подсказки] (https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Notes) в 'onbeforeunload', поэтому в вашей функции нечего выполнять. – Teemu

+0

@Teemu, что вы рекомендуете в качестве рабочего? –

+2

Укажите ссылку на опрос на странице, если посетители захотят оставить страницу, пусть это сделает. – Teemu

ответ

1

С 25 мая 2011 года, в спецификации состояний HTML5 и обращение к window.alert(), window.confirm(), и window.prompt() методы могут быть проигнорированы во время этого события. Дополнительную информацию см. В спецификации HTML5.

Источник: developer.mozilla.org

Функция должна возвращать текст, который будет отображаться в диалоговом окне Confirm:

window.onbeforeunload = function(e) { 
    return 'You are leaving this page.'; 
}; 

, но это не обязательно будет работать во всех браузерах.

+0

Я вижу. Документация разработчика на сайтах Mozilla предлагает использовать addEventListener в сочетании с beforeunload, так что-то вроде этого? window.addEventListener ("beforeunload", function() {// code}); –

+0

Да, вы можете найти примеры здесь https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload – MazzCris

Смежные вопросы