URLSearchParams(MDN) 是原生的获取url参数的方法。
现象
尝试以下代码,获取参数值,发现返回值为null:
new URLSearchParams('?name=11&orgid=or').get('name')
原因:
旧版本浏览器(49版本)不会把最前方的问号去除。
URLSearchParams
构造函数不会解析完整 URL,但是如果字符串起始位置有?
的话会被去除。【URLSearchParams - Web API 接口参考 | MDN (mozilla.org)】
因此旧版内核行为
new URLSearchParams('?name=11&orgid=or').get('name') // null
new URLSearchParams('?name=11&orgid=or').get('orgid') // 'or'
new URLSearchParams('?name=11&orgid=or').get('?name') // 11
new URLSearchParams('name=11&orgid=or').get('name') // 11
新版内核行为(会忽略第一个问号)
new URLSearchParams('?name=11&orgid=or').get('?name') // null
new URLSearchParams('?name=11&orgid=or').get('name') // 11
new URLSearchParams('?name=11&orgid=or').get('orgid') // 'or'
new URLSearchParams('name=11&?orgid=or').get('name') // 11
new URLSearchParams('name=11&?orgid=or').get('?orgid') // 'or'