vue url跳转解析和参数编码

1. 背景

最近在做url跳转的时间遇到几个问题,故在此记录一下

1.1 vue获取当前url

url参数是挂载在 this.$route对象上的,其中query对象是所有参数的集合,fullPath是参数字符串形式,类似下面的

// 比如当前的url为 
// https://www.blakeyi.com/msgtrace/?startTime=1647864978687&endTime=1647951378687
this.$route = {
	query:{
		startTime:"1647864978687",
		endTime:"1647951378687"
	},
	fullPath:"/?startTime=1647864978687&endTime=1647951378687"
}
// 所以要获取对应参数直接如下
let startTime = this.$route.query["startTime "]

1.2 使用window.open打开页面

window.open(url, '_blank')
// 这里注意两个点
// 1是使用'_blank'参数打开新页面
// 2是url得加上http头,不然会在当前网址下跳转, 比如说
// url为 www.baidu.com, 这样子并不会跳转到百度页面,而是跳转到 "currentUrl/www.baidu.com" ,这样子自然是一个无效的页面

1.3 url参数里面有特殊字符处理

其实就是把一些特殊字符转换为 %hex的形式, 比如时间串里的冒号:, 它的ascii码是3A, 故转换后为%3A, js提供了专门的函数来进行转换,最常用的encodeURI和encodeURIComponent,对URL编码是常见的事,所以这两个方法应该是实际中要特别注意的。它们都是编码URL,唯一区别就是编码的字符范围,
其中encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&()=:/,;?+’
encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!
()’
所以encodeURIComponent比encodeURI编码的范围更大。
如果你需要编码整个URL,然后需要使用这个URL,那么用encodeURI

1.4 时间戳编码问题

// 注意转为UTC时间要减8小时
let timestamp = new Date(1647953273006).getTime() - 3600 * 8 * 1000 // 减8小时
let start = timestamp - 60 * 5 * 1000 // 减5分钟
let end = timestamp + 60 * 5 * 1000 // 减5分钟
let startTime = parseTime(start, '{y}-{m}-{d}T{h}:{i}:{s}.000Z')
let endTime = parseTime(end, '{y}-{m}-{d}T{h}:{i}:{s}.000Z')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值