2012-09-09 101 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}) 

(注意我說的dontRequest參數,所以我可以做一個「假」 pjax調用,實際上不會觸發阿賈克斯,但仍更新網址,沒有成功)

要複製這個 在直播現場:

  1. 轉到http://2u.fm(點擊出來的模態的)
  2. 向下滾動,直至p = 2加
  3. 點擊熱門
  4. 按回到你的瀏覽器

注意什麼也沒有發生......現在再次按回來,你會看到它的作品。這是因爲我使用replaceState更新了?p = 2的URL。我如何做這項工作,以便它能夠識別這些? params ...我試圖自定義pjax沒有成功。

回答

0

這是一個古老的問題,但我會給出一個答案,就像我那樣碰巧來到這裏。

當您在頁面上手動使用pushState或replaceState時,Pjax無法正常工作。當它遇到這樣的狀態時,它什麼也不做。所以,當你向後/向前按鈕按下這樣一個頁面時,pjax:popstate事件不會觸發,也不會發生任何事情。

一種解決方法是使用$ .pjax.state作爲pushState的和replaceState的狀態對象參數

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

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

有在github上關於這個問題的一些問題: issue/381issue/495