通常通过window.location
获取页面的 URL 地址。
首先简单说明一下 window.location
window.location
比如URL:http://b.a.com:88/index.php?name=kang&when=2011#first
window.location
和 document.location
互相等价的,可以交换使用。
search:"?name=kang&how=" 第一个"?"之后
hash:"#when=2011#first" 第一个"#"之后的内容
疑问:
为什么有时候 window.location.search
为空?
注意上面的 search
和 hash
的区别,如果URL中 ?
之前有一个 #
比如:“http://localhost:8081/#/ApplyForm?companyId=32&storeId=3129”,那么使用window.location.search得到的就是空(‘’)。因为“companyId=32&storeId=3129”串字符是属于“#/ApplyForm?companyId=32&storeId=3129”这个串字符的,也就是说查询字符串search只能在取到 ?
后面和 #
之前的内容,如果“#”之前没有“?”search取值为空。
正题:new URLSearchParams()
1、可通过 location.search
或 locaton.hash
处理URL来获取到参数组成的字符串。
2、然后通过 new URLSearchParams()
方法处理字符串得到。
3、通过 get("id")
方法可得到对应参数
let urlSearch = '?companyId=32&storeId=3129' // 经过处理过的 url 参数字符串
let objParams = new URLSearchParams(urlSearch)
let companyId = objParams.get('companyId ') // 32
let storeId = objParams.get('storeId') // 3129
获取参数的方法还可通过 Object.fromeEntries() 来获取参数对象。
Object.fromEntries(new URLSearchParams(objParams) // {companyId: 32, storeId: 3129}