url字符串解析

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:众所周知,我们可以通过假设有这样一个直接把url赋值给

众所周知,我们可以通过 location 获得当前页面地址(URL)的 hrefprotocolhostsearchhash 等属性,但是如果给你一个 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字符串解析

但是很遗憾,对于 跨域的url ,不会触发iframe的 window.onload ,直接访问 location.href ,浏览器也给出提示限制跨域。

a

提到 url ,可能会有人想到 <a> 标签,因为我们经常访问页面地址是通过点击 a 链接跳转的,那么能否通过它来解析 url 呢?

url字符串解析

我们创建了一个 a 元素,并给它的 href 赋值了 url ,可以打印出这个 a 元素的对象,其中就包括 url 的这些属性。

url字符串解析

并且可以利用它简单判断一个 url 是否是合法的,不合法的 urlhost , originnull

url字符串解析

URL

利用 a 元素来解析 url 算是奇淫巧技吧,其实现代浏览器提供了一个创建的 URL对象 的构造函数— URL() ,直接把 url 当作参数传入,就会返回一个 URL对象

url字符串解析

返回的 URL对象 有个 searchParams 属性,可以对 urlsearch 部分解析,再也不需要用循环或正则方式获取 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...


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

构建之法(第二版)

构建之法(第二版)

邹欣 / 人民邮电出版社 / 2015-7 / 59

软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此基础上,作者对......一起来看看 《构建之法(第二版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具