2011-08-23 120 views
0

我只是建立一個簡單的Ajax網站,但運行到Safari和Chrome的一個問題。我只是創建一個簡單的重定向,如果用戶進入一個頁面,即Webkit將「#」變成%23導致404錯誤?

"/blog" 

,他們將被重定向到

"/#/blog" 

代碼:

url = window.location.pathname 

if(url != "/") { 
    window.location.pathname = "/#" + url 
} 

這是在Firefox偉大的工作但不幸的是WebKit的瀏覽器打開「#」變成「%23」,並給予404,例如:

"/%23/blog" 

我如何避免這種情況?

謝謝, 亞歷克斯

回答

1

要設置路徑,其中,根據定義,不包括散列。 Webkit正試圖爲你解決這個問題(Firefox只是更好地猜測你想要的東西)。試試這個:

window.location = '/#/blog'; 
+0

啊,完美!謝謝! –

2

pathname是指所有主機後,並查詢字符串和哈希之前。考慮這個:

window.location.hash = window.location.pathname; 
window.location.pathname = "/"; 

我不太確定哪個瀏覽器(S)正在執行JavaScript的規範正確,但WebKit的行爲似乎是正確的我。

+0

但是當頁面重新加載到「/」時它會刪除散列嗎? –

+0

@Alex不是鉻...不知道其他瀏覽器,但一般的散列被保存 –

+0

用你的方法是從「/博客」 =>「/博客#/博客」 =>爲「/」 –