在重定向JavaScript时从URL中删除#

Remove # from URL on Redirect JavaScript

本文关键字:删除 URL 时从 重定向 JavaScript      更新时间:2023-09-26

我目前有一个有趣的问题。我使用Facebook PHP SDK来验证我网站上的用户。在我的初始请求中,我传递了一个重定向URL,所有工作都如预期的那样,用户被发送回指定的URL。

一旦进入这个页面,我们称之为"中间页面",它们就会被重定向到我的第二个页面,我们将其称为"主页"。在这里,人们可能会注意到一个有趣的#_=_被附加到URL。这个问题在这里讨论:Facebook回调追加'#_=_';返回URL。

我已经在那个页面上实现了JavaScript解决方案;然而,一个问题仍然存在。URL的实际哈希部分仍然存在,即使奇怪的下划线字符已经消失。所以,这不是一个大问题,URL现在是./home#

我已经研究了一些解决这个问题的方法:如何在不刷新页面的情况下使用JavaScript从window.location中删除哈希?。

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

现在,我想,既然我是,一旦我的用户返回到我的"中间页",再次将他们重定向到我的‘主页’,操作的刷新部分就可以以某种方式跳过。不过我可能完全错了。

因此,总结一下:有没有一种方法可以删除URL的剩余哈希部分,而不必重新加载我的"中间页",而是在我重定向到"主页"后删除它?

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

这在所有使用javascript的浏览器中都是不可能的,因为我过去曾尝试过这样做。然而,你可以使用HTML5来实现同样的事情,这使用HTML5历史API

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