2012-04-03 112 views
2

我目前有一個有趣的問題。我使用Facebook PHP SDK對我的網站上的用戶進行身份驗證。在我最初的請求中,我傳入了一個重定向URL,並且所有工作都按預期工作,用戶被髮送回指定的URL。從重定向JavaScript的URL中刪除#

在此頁面上,我們將其稱爲「中間頁面」,它們被重定向到我的第二頁,我們將其稱爲「主頁」。在這裏,你可能會注意到一個有趣的#_=_被追加到URL中。這個問題在這裏討論:Facebook Callback appends '#_=_' to Return URL

我已經在該頁面上實現了JavaScript解決方案;但是,仍然存在一個問題。即使奇怪的下劃線字符消失,URL的實際散列部分仍然存在。所以,這不是一個大問題,URL現在是./home#

我看了一些方法來解決這個問題:How to remove the hash from window.location with JavaScript without page refresh?

但是,顯然這些解決方案需要刷新頁面才能工作。顯然,這不是最有效和最人性化的方式。

現在,我認爲自從我以後,一旦我的用戶返回到「中間頁面」,將它們再次重定向到我的「主頁」,操作的刷新部分可能會以某種方式跳過。但我可能是絕對錯誤的。

因此,得出結論:有沒有一種方法可以在不重新加載我的「中間頁面」的情況下刪除網址中剩餘的散列部分,但在我重定向到「主頁」後刪除它?

編輯:我通過PHP重定向用戶,使用:header('Location: ./home');

+0

您如何從中間頁面重定向用戶? – Maciej 2012-04-03 01:51:58

+0

對不起,編輯我的問題。 – elliottbolzan 2012-04-03 01:55:11

+0

恕我直言,沒有散列的URL調用將始終導致頁面的重新加載......這就是散列的用途......您可以清除散列頁面上的所有鏈接,併爲此將其除去下一次用戶點擊一個鏈接.... – Dominik 2012-04-03 11:01:50

回答

2

這實際上並不是所有使用JavaScript的瀏覽器都可行,因爲我曾試圖在過去使用它。但是,您可以使用HTML 5來實現相同的目的,這使用HTML5 History API

function deleteHash(){ 
    // Remove the hash by rewriting URL without it. 
    history.pushState("",document.title,window.location.pathname + window.location.search); 
} 
+0

絕對真棒,謝謝! – elliottbolzan 2012-04-03 17:53:20