Bug随机

0 阅读1分钟

今天提测了一个需求后,测试突然说出现了一个诡异的bug,让我重新修改一下: 需求:https://xxx.com/xxx/xxx/7521998550638051363,这是一个页面链接,需要通过获取7521998550638051363 userId,然后请求接口,接口会返回一个三方链接callBackUrl,然后在打开三方连接;

思路:获取到7521998550638051363,然后获取到callBackUrl后,使用

const url = decodeURIComponent(callBackUrl);
if(!url) return;
window.location.href = url;

问题:页面会刷新两次,然后第二次域名会变成 https://xxx.com/xxx/xxx/null;

解决:接口callBackUrl字段没有返回字符返回了一个 null,这时候我判断的 if(!url) return;是不成立的,因为经过decodeURIComponent(callBackUrl) 会变成字符串 null,所以每次还是会跳转。

由于window.location.href = 'null';浏览器会把 'null' 视为相对 URL 跳转,拼接当前页面所在的目录路径后访问,所以就相当于刷新两次,第二层变成了 https://xxx.com/xxx/xxx/null