部分ios用户使用 history.replaceState更改当前URL后,复制链接还是之前的URL

在部分iOS设备的Safari或微信内置浏览器中,使用`history.replaceState`修改当前URL后,复制链接仍显示原始URL。这可能导致业务受影响,因为复制的链接未更新。原因可能是iOS无法正确监听URL变化。解决方案虽能解决问题,但强制页面刷新会引入其他问题,不推荐使用。
部署运行你感兴趣的模型镜像

未解决之前代码
获取当前url并处理

//去除url上的openid参数
const href = location.href.replace(/(|&)openid=([^&]*)(?=#)/, '');
//更改当前url,这里应该是历史纪录也替换掉了
history.replaceState(null, null, href);

出现的情况
进入微信页面后,点击右上角分享按钮,点击复制链接,发现粘贴的链接还是之前的url,依然带有openid参数
(这里会影响到业务)
分析可能的原因

  1. ios无法监听到重写url的,每次获取到的当前url都是第一次进入页面的时候的url
    (但是其他ios是可以的)
  2. 微信内置浏览器(ios用的应该是safari)无法检测到history.replaceState更改后的变化

解决方案
增加代码

//替换之前的url历史纪录
window.location.replace(href)

结果
成功解决

这样子做的话相当于刷新了页面,会导致其他问题,不太可取。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值