onbeforeunload не работает в Safari или Chrome - PullRequest
5 голосов
/ 28 июля 2011

Я работаю над этой страницей: http://www.weloveflyers.co.uk/order.php

После того, как кто-то ввел детали своего заказа и нажал "Let's Go!"информация о заказе фиксируется, отображается для проверки, а затем «Оплатить сейчас!»кнопка появляется внизу (попробуйте, вам не нужно ничего платить, просто чтобы вы поняли, что я имею в виду)

Я не хочу мешать кому-либо покидать страницу, ДО того, как они нажмут «Пойдем»кнопку, но если они уже нажали "Поехали!"(т.е. разместил заказ), но еще не нажал «Оплатить сейчас!»Я хочу иметь возможность проверить с ними «Вы действительно хотите уйти? Если вы уйдете без оплаты, ваш заказ будет отменен!»

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

Любая помощь или совет, который кто-либо может предложить, будет с благодарностью получена!

Спасибо,

Фил

PS Для вашей информации я удалил все функции перед загрузкойс живой страницы на данный момент, потому что я не хочу раздражать посетителей, пока я не понял это правильно, и он делает именно то, что я хочу.

ОБНОВЛЕНИЕ : Вот последняя попытка:

var needToConfirm = true; 
window.onbeforeunload = confirmExit; 
function confirmExit() {
  if (needToConfirm) 
    return "Message";
}; 

1 Ответ

6 голосов
/ 28 июля 2011

Согласно документации MDN , я только что попробовал следующее в Chrome 11 (и 13) и Safari 5 на OS X и в Chrome 14 на Windows 7, и он отлично работает для меня (какВаш код выше!):

window.onbeforeunload = function (e) {
  e = e || window.event;

  // For IE and Firefox prior to version 4
  if (e) {
    e.returnValue = 'Any string';
  }

  // For Safari
  return 'Any string';
};

Что произойдет, если вы используете код выше на своей странице, в точности, как это?

Какие версии Chrome и Safari вы используете?

...