内容简介:众所周知,我们可以通过假设有这样一个直接把url赋值给
众所周知,我们可以通过 location 获得当前页面地址(URL)的 href 、 protocol 、 host 、 search 、 hash 等属性,但是如果给你一个 url字符串 ,怎么得到这些属性呢?也许用正则是一个方法。
假设有这样一个 url 字符串 "https://demo.vczhan.com/wave/heart-wave.html?name=abc&age=18#part" ,该怎么解析它呢。
iframe
直接把url赋值给 location.href 会从当前页面跳转到 url 的页面,如果我们在当前页面新建一个 iframe 并给它的 src 赋值这个 url ,似乎可以通过iframe的 window.location 拿到url的各个属性。
但是很遗憾,对于 跨域的url ,不会触发iframe的 window.onload ,直接访问 location.href ,浏览器也给出提示限制跨域。
a
提到 url ,可能会有人想到 <a> 标签,因为我们经常访问页面地址是通过点击 a 链接跳转的,那么能否通过它来解析 url 呢?
我们创建了一个 a 元素,并给它的 href 赋值了 url ,可以打印出这个 a 元素的对象,其中就包括 url 的这些属性。
host ,
origin 为
null
URL
利用 a 元素来解析 url 算是奇淫巧技吧,其实现代浏览器提供了一个创建的 URL对象 的构造函数— URL() ,直接把 url 当作参数传入,就会返回一个 URL对象 。
返回的 URL对象 有个 searchParams 属性,可以对 url 的 search 部分解析,再也不需要用循环或正则方式获取 search 对象。
var url = 'https://demo.vczhan.com/wave/heart-wave.html?name=abc&age=18#part'
var searchParams = new URL(url).searchParams
searchParams.get('name') // abc
searchParams.has('age') // 18
当然,有个专门处理 search 的API: URLSearchParams
// {a: 1, b: 2} -> a=1&b=2
new URLSearchParams({a: 1, b: 2}).toString()
// a=1&b=2 -> {a: "1", b: "2"}
var obj ={}
var searchParams = new URLSearchParams('?a=1&b=2')
// searchParams.has('a') // true
// searchParams.get('a') // 1
// searchParams.append('c', '3'); searchParams.toString() // "a=1&b=2&c=3"
for(var [key, value] of searchParams.entries()) {
obj[key] = value
}
console.log(obj)
更详细的请参考下方链接
URL: https://developer.mozilla.org...
URLSearchParams: https://developer.mozilla.org...
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
无懈可击的Web设计
西德霍姆 / 刘建宁 / 清华大学出版社 / 2009-4 / 59.90元
一个网站,无论视觉上多么美观,内容多么丰富,如果不能面向最广泛的用户群,那它就不算是真正成功的网站。《无懈可击的Web设计:利用XHTML和CSS提高网站的灵活性与适应性》是Web标准设计领域的公认专家Dan Cederholm的倾力之作,向您描述了基于Web标准的设计策略,以适应各种各样的用户浏览方式。书中每一章的开头都给出了一个基于传统HTML技术的实例,然后对它进行重构,指出它的局限性,并利......一起来看看 《无懈可击的Web设计》 这本书的介绍吧!