Javascript, Могу ли я "перенаправить" пользователя в onbeforeunload? Если не могу, как - PullRequest
9 голосов
/ 11 сентября 2009

Можно ли перенаправить на другую страницу, когда пользователь закрывает браузер?

Попытка:

  1. Я попробовал onunload, не работает

    window.onunload = function redirect(){...}
    
  2. Я также попробовал другой метод, он тоже не работает:

    window.onbeforeunload = redirect(){...}
    
  3. <body onbeforeunload="return false; redirecty()">

Третий метод, я хочу отменить onbeforeunload (означает задержку закрытия браузера), я вызываю функцию перенаправления, window.confirm, если да, перенаправить, если нет, затем закрыть браузер. Но это не работает так же хорошо.

Есть ли другой способ ?? Может быть, предложить пользователю выбрать, следует ли перенаправлять на новую страницу, когда он / она закрывает браузер? У меня заканчиваются идеи ...

Ответы [ 4 ]

4 голосов
/ 14 сентября 2009

Ваше событие onbeforeunload должно возвращать строку (которая не равна false), браузер включит эту строку в свое собственное сообщение, отображаемое пользователю.

window.onbeforeunload = function(){
        location.assign('http://www.google.com');
        return "go to google instead?";
    }

Однако будет очень сложно сформулировать ваше сообщение так, чтобы пользователь мог понять, что делать. И я не уверен, что это надежно в каждом браузере, я только попробовал это в Chrome, это работало, но я закончил с вкладкой, которую я не мог закрыть! К счастью, мне удалось убить его с помощью диспетчера задач Chrome.

3 голосов
/ 15 декабря 2011

Не без ошибок, но работает

window.onbeforeunload = function(){
        window.open("http://www.google.com","newwindow");
        return "go to google instead?";
}

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

2 голосов
/ 11 сентября 2009

Если пользователь пытается закрыть браузер, то его намерения довольно ясны; он ожидает, что браузер закроется. Предотвращение этого или создание чего-либо еще в промежутке между нажатием кнопки «Закрыть» и закрытием браузера - это просто плохая идея IMO. Есть ли для этого особая причина? Я имею в виду, что когда я нажимаю на кнопку «закрыть», я ожидаю, что браузер закроется, и если что-то случится, я нахожу это чрезвычайно раздражающим. Я думаю, что я достаточно разумен. Я? Кто знает такие вещи.

Почему бы вам не попытаться соблазнить пользователя посетить другую страницу менее навязчивым способом? Как со ссылкой или баннером?

0 голосов
/ 11 сентября 2009

Простой ответ - нет. Если браузеры позволяют вам делать больше с событиями onbeforeunload / onunload, это может быть использовано любым злонамеренно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...