2016-09-16 4 views
1

Я использую history.pushState для изменения содержимого страницы с запросом ajax.Как вернуться в предыдущее состояние, когда нажата кнопка «Назад»

И очень точно, что после history.pushState в браузере отключена кнопка «Вперед», поэтому любая кнопка, которая будет нажата, будет кнопкой «Назад».

Так что я хочу вернуться к основному состоянию страницы перед pushState. Я использую запрос ajax для извлечения содержимого основного состояния, но проблема в том, что как заставить URL-адрес в браузере вернуться к основному URL-адресу. Я не хочу использовать метод pushState для этого из-за некоторых проблем.

Я увеличиваю значение на один после успеха ajax в другом, чтобы знать, как далеко у меня есть pushState.

var mainState; 
var pushed = false; 
$('a').click(function(){ 
    $.ajax({ 
     url: "/path/to/content", 
     success: function(data){ 
      $('div').html(data); 
      history.pushState('state', 'title', 'url'); 
      mainState ++; 
      pushed = true; 
     } 
    }) 
}) 

window.onpopstate(function(){ 
    if(pushed){ //knowing fully well that the forward button is disabled 
     // take it back to the main state 
     history.go(-mainState); 
    } 
}) 

Скажем mainState это 3 и я нажимаю кнопку назад, вместо того, чтобы идти к mainState он принимает меня mainState - 3.

Пожалуйста, кто-нибудь знаю, что могу это сделать?

ответ

0
var mainState = 3; 
-mainState; //-3 
--mainState; //2 

Ваш код должен выглядеть следующим образом

window.onpopstate(function(){ 
    if(pushed){ 
     history.go(--mainState); //FIXED 
    } 
}) 
Смежные вопросы