2013-01-15 56 views
1

因爲window.history.pushState不適用於IE9等HTML 4瀏覽器,所以我查找了history.js,這是一個模擬pushState行爲的jQuery庫。在IE9中使用history.pushstate

問題是,使用pushState的時候,該URL的末尾是重複

例如,

History.pushState(null,null,window.location.pathname + '?page=1'); 

回報,

http://www.development.com/test.html#test.html?page=1

如何避免這個問題?非常感謝你。

更新(2012年/ 1/22),問賞金:

   if (pageNo == 1){ 
        //window.history.pushState({"html":currURL,"pageTitle":''},"", window.location.pathname + '?page=1'); For chrome and FX only 
        //History.replaceState(null,null,'') 
        //History.pushState(null,null,'?issue=' + currPageIssueNo + '&page=1'); 
       } 
       else if (pageNo != 1 || pageNo == 1 && linkPageNo > 1 ) { 
        History.pushState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo); 
        //window.history.pushState({"html":currURL,"pageTitle":''},"", newURL); For chrome and FX only 
       } 

我還是遇到了問題,如果是第一頁

http://localhost/development/flipV5.html?issue=20121220&page=1 

,當我去到IE9的第二頁,它有網址:

http://localhost/development/flipV5.html?issue=20121220&page=1#flipV5.html?issue=20121220&page=2 

我會想實現是

http://localhost/development/flipV5.html?issue=20121220&page=2 

如果這是不可能的HTML瀏覽器4,請至少達到

http://localhost/development/flipV5.html/#?issue=20121220&page=2 

感謝好心幫

+0

「 test.html的」理想情況下,應該是http://www.development.com/test.htm;?page=1是完美的,但似乎不可能 – user782104

+0

此爲演示http://balupton.github.com/ history.js /演示/?狀態= 4 – user782104

+0

嘗試,因爲http://balupton.github.com/history.js/demo/#?state=4 – Musa

回答

1

剛剛從History.pushState

刪除window.location.pathname
History.pushState(null,null,'?page=1'); 
+0

保持不變,沒有效果後取出window.pathname .. – user782104

+0

它看起來像這樣使用客戶端 – Talspaugh27

3

您的代碼完全符合您的期望。

window.location.pathname + '?page=1' 

打印出位置路徑(test.html),並追加?page=1

刪除window.location.pathname,它應該工作。

+0

抱歉沒有任何改變的history.js API,重複的test.html依然存在... – user782104

0

也許嘗試:

History.replaceState(null,null,'?issue=' + currPageIssueNo + '&page=' + pageNo); 
+0

遺憾沒工作' – user782104

+0

它看起來像這是在客戶端上使用history.js api – Talspaugh27

2

您需要設置客戶端重定向IE。假設用戶在土地這個頁面:

http://localhost/development/flipV5.html?issue=20121220&page=1 

他們需要被髮送到

http://localhost/development/flipV5.html#?issue=20121220&page=1 

的原因是,IE < = 9不讓你哈希之前任何修改,而不發送用戶轉到新頁面。這是一箇舊的安全功能,防止當您真的在spambook.com上時將URL更改爲facebook.com。最近,人們意識到這是過度的。

重定向看起來是這樣的:

<!--[if LTE IE 9]> 
<script type="text/javascript"> 
if (location.search) 
    location.href = location.pathname + "#" + location.search; 
</script> 
<![endif]--> 

您現在可以推的狀態,他們不會同時在搜索和散列顯示(這是分別?#後)