参考文章:https://blog.csdn.net/devcloud/article/details/90694093
https://blog.csdn.net/weixin_41575159/article/details/93169070
https://juejin.cn/post/6844903666000904205
写在前面:
获取url网址的方法:window.location.href
1. 原生js
var url="https://gitbook.cn/gitchat/geekbooks?tag=JavaScript&name=pwwu&age=24"
var parms = url.indexOf('?') +1
var temp1 = url.slice(parms)
var keyValue = temp1.split ('&')
var obj = {};
for (var i=0;i<keyValue.length;i++){
var item = keyValue[i].split('=')
var key = item[0]
var value = item[1]
obj[key]=value
}
console.log(url);
console.log(temp1); // ['https://gitbook.cn/gitchat/geekbooks','tag=JavaScript&name=pwwu&age=24']
console.log(pram); // tag=JavaScript&name=pwwu&age=24
console.log(keyValue); // ['tag=JavaScript','name=pwwu','age=24']
console.log(obj); // {tag:'JavaScript',name:'pwwu',age:'24'}
总结:
要思路就是将Url用split()分割成不同的块,返回值为一个数组,一直分割到为 [‘tag=JavaScript’,‘name=pwwu’,‘age=24’]为止,然后将该数组中的每一项以键值对的形式传进一个空对象obj(这里需要遍历数组),最后利用obj.name“点”的方式获取相应参数。
2. URLSearchParams()函数
var url = "https://gitbook.cn/gitchat/geekbooks?tag=%E5%A4%A7%E6%95%B0%E6%8D%AE&name=gy&age=22"
var searchParms = new URLSearchParams(url)
console.log(searchParms.get(age)) //22
URLSearchParams接口定义了一些实用的方法来处理URL字符串查询。
URLSearchParams.append(“key”,“value”) --插入一个指定的键值对
URLSearchParams.delet(“key”)
URLSearchParams.get(‘key1’) – 获取键的相应值
URLSearchParams.getAll() – 获取所有键的值,返回是一个数组。
URLSearchParams.has(‘key1’) – 判断是否有该键值,返回值为true或false
3. getUrlParams()
function getUrlParam(name){
//构造一个含有目标参数的正则表达式对象
var reg = new RegExp("(^|&)"+name+"=([^&*])(&|$)")
//匹配目标参数
var r = window.location.search.substr(1).match(reg) //匹配浏览器窗口的url
// var r = url.substr(1).match(reg) // 匹配定义的url
// substr(start,len) 抽取字符串从索引start处开始的指定书目的字符。
//返回参数
if(r!=null){
return nuescape(r[2])
}else{
return null
}
}