2012-09-09 5 views
1

내가 좋아하는 몇 가지 매개 변수를 수동으로 업데이트를 URL을 수행 할 때 페이지 = 2가 pjax에 의해 인식되지 않습니다 :Pjax 뒤로 버튼이 작동하지

window.history.replaceState(null,document.title,"?page=2"); 

내가 같이 pjax를 사용하여 시도 잘

$.pjax({url: "?page=2", container: (container || '#null'), replace: true, dontRequest: true}) 

하는 복제하려면 (I 실제로 URL을 아약스을 발사하지만 여전히 업데이트 할 것 "가짜"pjax 호출을 할 수 있도록 내가 성공하지의 dontRequest 매개 변수를 추가합니다) 이 라이브 사이트 : http://2u.fm

  1. 이동 될 때까지
  2. 스크롤 (모달에서 클릭)이 다시 브라우저에
  3. 를 클릭하십시오 인기
  4. 눌러 추가 = P
?

아무 것도 일어나지 않습니다 ... 이제 다시 누르면 다시 작동합니다. 이는 replaceState를 사용하여? p = 2로 URL을 업데이트하기 때문입니다. 이 작품을 어떻게 인식하여이를 인식 할 수 있을까요? params ... 필자는 성공한 pjax 커스터마이징을 시도했다.

답변

0

PJAX는 전체 URL이 아닌 경로 만 추가하는 것으로 보입니다. 이것은 당신이이 문제를 겪고있는 이유입니다.

레일스를 사용하는 경우 Wiselinks https://github.com/igor-alexandrov/wiselinks을 꼭 사용해보십시오. 그것은 브라우저 상태 관리를위한 스위스 군용 칼입니다. 여기에 몇 가지 세부 사항이 있습니다 : http://igor-alexandrov.github.io/blog/2013/07/11/the-way-to-wiselinks-1-dot-0/.

Wiselinks는이 문제와 기타 여러 상황을 더 잘 처리합니다.

0

이것은 오래된 질문이지만 내가 한 것처럼 여기 올 사람에 대한 대답을 제공 할 것입니다.

페이지에서 pushState 또는 replaceState를 수동으로 사용하면 Pjax가 완벽하게 작동하지 않습니다. 그런 상태가되면 아무 것도하지 않습니다. 따라서 pjax : popstate 이벤트가 실행되지 않고 아무 일도 일어나지 않습니다.

해결 방법은

history.pushState($.pjax.state, null, href) 

history.replaceState($.pjax.state, null, href) 

이 문제에 대한 GitHub의에서 몇 가지 문제가 있습니다 pushState 및 replaceState의 상태 개체의 인수로 $ .pjax.state을 사용하는 것입니다 : issue/381, issue/495

관련 문제