不刷新页面修改浏览器url

最近完成Facebook的登录功能,但是在Facebook回调的时候会自动在url后面 添加#_=_ ,我们的代码在跳转回原来点击登录的页面时,这个调皮的家伙也跟着过去了,而且无法删除。

于是乎就想用js方式 将url后面的#_=_ 去掉。但是很多方法都需要页面重新刷新一次,不但怎加了服务器压力,用户体验也很不好。

经过多方调查,找到了不用刷新页面,也可以修改的方式,具体js如下:

if (window.location.hash == '#_=_'){

       history.replaceState ? history.replaceState(null, null, window.location.href.split('#')[0]) : window.location.hash = '';

}


在你的页面,或js文件中加入这段js后,就ok拉

让我们来看一下如何使用JavaScript(JS)来修改URL刷新页面。在网页开发中,使用JS可以实现很多功能,其中包括动态修改URL。 首先,我们需要了解一下window对象中的history对象。这个对象包含了有关浏览器历史记录的信息,并提供了一些方法来操作历史记录。我们主要使用其中的pushState()方法来修改URL。 pushState()方法接受三个参数,分别是状态对象(state object)、标题(title)和URL。状态对象可以包含任何你想要的数据,而标题在大多数浏览器中是可见的。而重点是第三个参数URL,它允许我们修改浏览器地址栏中的URL,而刷新页面。 以下是一个示例代码: ``` // 获取要修改URL片段 var newURL = "http://example.com/new/url"; // 修改URL window.history.pushState(null, null, newURL); ``` 在这个例子中,我们将URL修改为"http://example.com/new/url"。 需要注意的是,修改URL刷新页面,因此在修改URL之后,页面的内容仍然保持变。这意味着我们可以使用JS来创建单页应用程序(Single Page Application,SPA),在刷新页面的情况下更改URL以获取同的数据。 然而,需要注意的是,虽然URL修改了,但浏览器会立即去请求新的页面。如果需要加载新的内容,我们需要使用其他JS技术(如AJAX)来请求服务器获取数据,并使用返回的数据来更新页面的内容。 总而言之,通过使用JS中的pushState()方法,我们可以在刷新页面的情况下修改URL,从而实现动态的URL变化。这在构建单页应用程序等情况下非常有用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值