Safari остается "загрузочным", когда окно.onbeforeunload возвращает false
Следующая суть: https://gist.github.com/1876791 (заимствовано из демо в этот вопрос )
это мертвый простой пример использования window.onbeforeunload
в js.
Проблема у нас следующая (происходит с Safari 5.1.3 и не последней версией Chrome):
- посетите эту страницу: http://www.4guysfromrolla.com/demos/OnBeforeUnloadDemo1.htm
- нажмите на одну из ссылок, вы получите предупреждение, спрашивающее вас, действительно ли вы хотите оставьте эту страницу
- Нажмите "Остаться На Странице"
- перезагрузите страницу с помощью
cmd-R
. Вас спросят в другой раз, действительно ли вы хотите покинуть страницу - Нажмите Кнопку "Остаться На Странице".
- Safari остается в состоянии "загрузка", а индикатор выполнения показывает, как если бы он должен был загрузить следующую страницу.
Это ошибка из Safari ? Есть ли способ обойти эту проблему ?
2 ответа:
Я смог воспроизвести эту проблему, даже пропустив шаги 2 и 3 ОП. Любая форма перезагрузки демонстрирует эту проблему. Минималистичные шаги для воспроизведения:
- посетитестраницу, о которой идет речь .
- хит перезарядки.
- Нажмите кнопку "остаться на странице".
Ход загрузки визуально предварительно включается сразу после попадания перезарядки и остается таковым в течение всей жизни диалога подтверждения (по-видимому, в попытке передать"висящий над краем скалы" -тип зрелый ситуации;) однако:
- когда диалог закрывается кнопкой "остаться на странице", он оставляет символ остановки
X
включенным, а ход загрузки все еще занят и заморожен где-то около отметки 10%.- эту" загрузку " нельзя отменить никакими средствами (клавиатура, кнопка, скрипт).
- вкладка Network в Web Inspector утверждает, что загрузка не происходит.
Это действительно похоже на ошибку интерфейса Webkit / Safari - похоже, не удается отключить индикатор выполнения в условия пребывания на странице. Лучше всего было бы сообщить об этом командеWebkit или, Поскольку вы испытываете это в Safari, возможно, командаSafari будет лучше.
Пожалуйста, смотрите эту страницу -> https://developer.mozilla.org/en/DOM/window.onbeforeunload
Вы должны обработать событие. Пример на странице работает нормально. Вот код:
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'; };