Переход на страницу jQuery и история браузера - PullRequest
7 голосов
/ 02 сентября 2010

Я работаю с jQuery, чтобы создать эффект постепенного изменения на моей html-странице, что прекрасно работает. Однако, когда я нажимаю кнопку «Назад» в своем браузере, я перехожу к нужному URL, но получаю пустую страницу. Это кеширование в браузере? Я относительно новичок в jQuery, и я не совсем уверен, как решить эту проблему. Это сайт: http://www.e -preview.be / huyzewaterloos / nl / index.html

код, который я использую, это:

//page transition
    $("body").css("display", "none");
    $("body").fadeIn(1500);
  $("a.transition").click(function(event){
   event.preventDefault();
   linkLocation = this.href;
   $("body").fadeOut(500, redirectPage);
  });

 function redirectPage() {
  window.location = linkLocation;
 }

Ответы [ 4 ]

8 голосов
/ 12 сентября 2010

Это потому, что ваша страница находится в "bfcache" (см. статью о Firefox ).Чтобы отключить bfcache, вы можете просто добавить атрибут onunload:

<body onunload="">

Источник: Ajax, кнопка "Назад" и обновления DOM и При нажатии на событие загрузки между браузерамикнопка назад?

1 голос
/ 02 сентября 2010

В новых браузерах лучше сохранять готовые к отображению предыдущие страницы при использовании кнопок «назад» и «вперед».Так что, вероятно, происходит то, что ваш браузер просто повторно отображает страницу после того, как $("body").fadeOut(500, redirectPage); завершил выполнение.То есть к странице, отображаемой после нажатия кнопки «Назад», применяется стиль * 1002. *.

. У меня не было проблем при навигации по вашей странице в Chrome «6.0.472.51 бета» с помощью кнопок «назад» и «вперед».Когда я использовал Firefox 3.5, я увидел описанную проблему при использовании кнопки «Назад» для возврата на страницу указателя.Используя Firebug, я смог подтвердить, что стиль элемента body был установлен на display: none.

. Итак, вы видите, что FireFox bfcache сохраняет страницу в предыдущем состоянии, JavaScript ивсе.Если вы хотите, чтобы Firefox повторно запустил ваш код постепенного изменения, вы можете присоединить его к событию pageshow в Firefox.Аналогично, WebKit имеет свой собственный механизм page caching (который повлияет на Safari и Chrome).

Следует также отметить, что функция jQuery .ready() имеет значение не то же самое, что и функция window.load().См. документацию для получения дополнительной информации. исходный код для функции .ready() также весьма полезен.

Подведем итог: код, выполняемый $.ready(), выполняется до , страница фактически отображается,В более новых браузерах, когда вы уходите со страницы, очень вероятно, что браузер сохранит состояние этой страницы точно так же, как и при выходе из нее.Таким образом, когда вы используете кнопку «Назад» браузера, чтобы вернуться на страницу, страница не будет отображаться повторно.То есть DOM не будет перестроен, а функция $.ready() не будет перезапущена.Если у вас есть код, который нужно запускать каждый раз, когда на странице отображается , отображается , тогда присоедините код к методу pageshow() (если он существует).

0 голосов
/ 02 сентября 2010

Обычно страницы кэшируются, когда вы нажимаете кнопку «Назад», ваша функция $ (document) .ready () не срабатывает.

Попробуйте установить no-cache для страницы.

0 голосов
/ 02 сентября 2010

В приведенной выше функции переменная linkLocation больше недоступна, поскольку она выходит за рамки.

Попробуйте вместо этого:

$("body").css("display", "none");
$("body").fadeIn(1500);
$("a.transition").click(function(event){
    event.preventDefault();
    linkLocation = this.href;
    $("body").fadeOut(500, function() {
        window.location = linkLocation;
    });
});

Редактировать: поэтому я исправил ваш код, ноэто был не вопрос.:)

По-видимому, jQuery (документ) .ready () не запускается при нажатии кнопки "Назад".Вы можете попробовать это в верхней части страницы.

history.navigationMode = 'compatible';

Источник: При нажатии кнопки "Назад" происходит событие кросс-браузерной загрузки?

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