Кнопка возврата назад - PullRequest
       1

Кнопка возврата назад

7 голосов
/ 28 февраля 2011

Я много искал, чтобы избавиться от этой проблемы в интернете, но не смог найти конкретного решения, несмотря на то, что проблема подробно обсуждалась ранее.

Запрос прост. Мой javascript динамически добавляет Iframe на веб-страницу (которая отображает форму обратной связи). Проблема заключается в том, что «после ответа» теперь, когда пользователь нажимает кнопку «Назад» браузера, на фрейм вместо окна браузера влияют, то есть вопросник отображается снова. Я хочу, чтобы кнопка возврата браузера работала нормально.

Такое поведение действительно раздражает, и мне очень трудно это исправить.

Я использую Firefox.

Жду ответов. Пожалуйста, сообщите мне, если я должен дать более подробную информацию.

Спасибо,

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

Firefox и IE действительно действуют так, как вы упомянули, но Chrome нет, и я предполагаю, что другие браузеры WebKit будут делать то же самое.В Chrome нажатие кнопки «Назад» приведет вас туда, куда вы хотите перейти (предыдущий URL родительского фрейма).то есть Chrome, чтобы не добавлять изменения URL iframe в историю кнопок возврата.

К сожалению, я не нашел способа заставить IE и FF повторить это, поэтому я использовал подход поста AJAX, предложенный Аруном выше.

Вот мой источник iframe, который использует jQuery для публикации формы и замены всей страницы результатом этого POST:

<form method="post" onsubmit="postForm(this);return false">
  ...
</form>

<script type="text/javascript">
function postForm(form) {
    $.post(form.action, $(form).serialize(), postCompleted);
}
function postCompleted(data) {
    $('html').html(data);
}
</script>

Это работает во всех браузерах;нажав кнопку «Назад», вы вернетесь к предыдущему URL-адресу, увиденному конечным пользователем, вместо начальной формы, динамически загружаемой в iframe.

3 голосов
/ 23 мая 2012

Я столкнулся с той же проблемой: я использую динамически созданный iframe, чтобы показать «всплывающее окно» на моей странице, чей SRC указывает на другую страницу, которая имеет форму и кнопку отправки.После отправки этой страницы обратный вызов JS используется для скрытия iframe.Как вы объяснили, это приводит к добавлению новой записи в историю (по крайней мере, в IE).

Но я обнаружил, что удаление элемента iframe из DOM (вместо его скрытия) приводит кв удаляемой записи нежелательной истории (проверено на IE9)!Это то, чего пользователь ожидает в этой ситуации.

Вы можете наблюдать это сами в IE9:

  1. Открыть меню кнопки «Назад» (щелкнув правой кнопкой мыши кнопку «Назад»): вы толькоиметь одну запись для текущей страницы
  2. Нажмите отправить в iframe => в меню кнопки "Назад" отображается одна дополнительная запись для iframe
  3. Удалить iframe из DOM => в меню кнопки назад нетбольше показывает, что запись
3 голосов
/ 28 февраля 2011

Ваша форма имеет кнопку отправки, которая отправляет страницу на сервер. Кнопка «Назад» всегда отправляет пользователя обратно в форму независимо от того, используете ли вы iframe или нет. Идеальный способ - уведомить пользователя о выполненном действии, в этом случае поблагодарить пользователя за отзыв (используя окно оповещения) и перенаправить пользователя на домашнюю страницу или предоставить кнопку на странице с надписью «Вернуться на главную».

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