2016-06-29 3 views
0

고객이 브라우저 뒤로 버튼을 사용하여 '이전 페이지'로 돌아갈 수 있도록 나를 괴롭 히고 있습니다. 문제는이 '페이지'가 Ajax를 통해 콘텐츠를 표시하는 모달 창으로 호출된다는 것입니다. 저는 Ajax 호출을하고 있는데 pushState가 제 해결책이라고 알았지 만, 실제로 이해하지 못합니다. 내가 아약스조차도 아니에요, 그것은 모두 자바 스크립트 .. 물건을 찾았어요 그럼, 내가 아약스 전화에 pushState를 추가하려면 어떻게해야합니까? 그게 가능한가? 아니면 그냥 Ajax와 함께 작동시키는 방법을 찾아야합니까?Ajax 호출시 pushState?

나는이 물건을 Pjax라고 불렀지 만 실제로 얻지 못했습니다. 내 아약스 호출은 다음과 같이 보입니다. 다른 사람이 이미 이런 일을 만든 경우

$(function() { 
    $('.w-container .w-nav-menu a').click(function() { 
     var $linkClicked = $(this).attr('href'); 
     var $pageRoot = $linkClicked.replace('#', ''); 
     if (!$(this).hasClass("active")) { 
      $(".w-container .w-nav-menu a").removeClass("active"); 
      $(this).addClass("active"); 
      $.ajax({ 
       type: "POST", 
       url: "./PATH/load.php", 
       data: 'page='+$pageRoot, 
       dataType: "html", 

       beforeSend: function(){ 
         $('#canvasloader-container.wrapper').show(); 
        }, 
       complete: function(){ 
         $('#canvasloader-container.wrapper').hide(); 
        },     
       success: function(msg){ 
        if((msg)) 
        { 
         $('.content').html(msg); 
         $('.content').hide().fadeIn(); 
        } 
       } 

      }); 
     } 
    event.preventDefault(); 
}); 

는 미안하지만 당신은 당신이 제공 한 코드에서 원하는 어떤 단계에서 pushState을 할 수

+0

다음을 확인하십시오. http : //stackoverflow.com/questions/10632483/pushstate-and-popstate-manipulating-browsers-history –

+0

이것은입니다. ** [유용한 플러그인 발견] 중 하나 (http://www.aplusdesign.com.au/blog/ajax-pagination-back-button/) ** –

답변

0

유용한 아무것도 찾을 수 없습니다 언제 당신이 역사가 조작되기를 바라는 지에 따라.

success: function(msg){ 
    if((msg)) 
    { 
     history.pushState([data], [title], [url]); // replace with appropriate values as parameters 
     $('.content').html(msg); 
     $('.content').hide().fadeIn(); 
    } 
} 

은 UX 당신 '에 따라 문제가있을 수 있습니다 :

당신은 history.pushState([data], [title], [url]); 단지 성공 아약스 양식을 반환 한 후이 같은 HTML 콘텐츠를 교체하기 전에 (매개 변수로 적절한 값) 할 수 사용자가 ajax 호출로 계속 페이지에 액세스하고 있고 이전 페이지 또는 'state'를 반영 할 URL이없는 경우이 솔루션은 아마 작동하지 않을 것입니다.

pushState과 같은 기록 조작 기능은 브라우저 기록 만 변경하며, 누군가 '뒤로'버튼을 클릭 할 때 발생하는 일을 제어하지 않습니다.

설정에 URL이로드 된 페이지가없는 경우 사용자가 '뒤로'버튼을 클릭 할 때 다른 Ajax 호출을 수행하고 이전 콘텐츠를로드하여 수행 할 작업을 제어해야 할 수도 있습니다 (추적해야 함 콘텐츠 변경 사항). 그게 시나리오라면 시작하는 데 도움이 될 겁니다. https://stackoverflow.com/a/25806609/4283725

+0

나는 여전히 이렇게 할 수 없다. pushState의 적절한 값은? – Josef