перед выгрузкой курьезы - PullRequest
       4

перед выгрузкой курьезы

6 голосов
/ 23 августа 2011

Проблема

Использование $(window).bind("beforeunload", ...[snip] для запроса, хочет ли пользователь покинуть страницу, приводит к некоторым странным результатам в некоторых браузерах.Появится диалоговое окно с вопросом, хотите ли вы остаться на странице или покинуть страницу.Если вы щелкнете по опции «остаться на странице», Google Chrome (последняя версия - 13.0.782.215 м) и WinIE7 отобразят последнюю страницу истории в кнопке «Назад».

Чтобы проиллюстрировать этот момент, текущая история сеанса состоит изпосещение следующих страниц:

  • Страница 3
  • Страница 2
  • Страница 1

Вы решаете покинуть страницу 3 и beforeunload событие пожаров.Вы решаете остаться на текущей странице.

Вы снова нажимаете кнопку «Назад» и в этот раз решаете покинуть страницу.Вы должны оказаться на странице 2, но вместо этого вы находитесь на странице 1. Вы можете снова перейти к странице 2.

Вопрос

Как я могу предотвратитьбраузер убирает эти страницы с кнопки «Назад», когда мы выбираем «остаться на текущей странице»?Возможно ли это?

Пример проблемы

Используя Google Chrome, в новом окне перейдите на http://stackoverflow.com и просмотрите несколько вопросов, не переходяназад.Затем нажмите кнопку Задать вопрос.Начните вводить в диалоговом окне.Нажмите Назад в вашем браузере.Выберите остаться на странице.Снова нажмите обратно в браузере и на этот раз выберите опцию покинуть страницу.Теперь вы вернулись на две страницы истории.По сути, вы можете вернуться назад на несколько страниц, если нажмете остаться на странице более одного раза.

Почему это важно?!

Я не хочу путать своих пользователей,Они не относятся к компьютерным знаниям.

Мой код (не то, что он уместен)

$(window).bind("beforeunload", function(){
    if (in_edit > 0){
        return "You are currently editing this job.\n\nAre you sure you wish to exit the page?";
    }
});

Ответы [ 2 ]

1 голос
/ 06 мая 2013

Chromium решил проблему в 2012 году: подробности можно посмотреть здесь: https://code.google.com/p/chromium/issues/detail?id=93858

0 голосов
/ 03 января 2012

Вы можете попытаться включить скрытый iframe на страницу, а затем в функции onbeforeunload изменить src для этого iframe.Вероятно, это может включать другой URL в истории, который может быть удален из стека истории вместо текущей страницы, на которой вы находитесь.

Итак, история выглядит так:

Page3
Page2
Page1

onbeforeunload измененияiframe:

Dummy
Page3
Page2
Page1

Но это только предположение, которое может сработать, вам нужно попробовать это ...

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