从Redirect JavaScript上的URL中删除#

时间:2012-04-03 01:43:53

标签: php javascript facebook url redirect

我目前有一个有趣的问题。我使用Facebook PHP SDK来验证我网站上的用户。在我的初始请求中,我传入了一个重定向URL,并且所有内容都按预期工作,用户将被发送回指定的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?

然而,显然这些解决方案需要页面刷新才能工作。显然,这不是最有效和用户友好的方式。

现在,我认为,既然我是,一旦我的用户返回到我的'中间页',再次将它们重定向到我的'主页',操作的刷新部分可能会以某种方式被跳过。我可能绝对错了。

因此,总结一下:有没有办法删除URL的剩余哈希部分,而不是实际重新加载我的“中间页面”,但是一旦我重定向到我的“主页”就将其删除?

编辑:我通过PHP重定向用户,使用:header('Location: ./home');

1 个答案:

答案 0 :(得分: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);
}