我目前遇到一个有趣的问题。我使用 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');
。
最佳答案
这在所有使用 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);
}
关于php - 从重定向 JavaScript 的 URL 中删除#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986087/