URlSearchParams构造函数获取URL参数的方法_let params = new urlsearchparams(window.location.s_MIss-董董的博客-程序员秘密

技术标签: javascript  

URL的各个部分组成

  • url的hash部分
const myURL = new URL('https://ddong345:8080/article/foo#index);
//获取
console.log(myURL.hash)//===>#index
//设置
myURL.hash='bar'
console.log(myURL.href);
//=>https://ddong345:8080/article/foo#bar

-url的host部分(主机)

const myURL = new URL('https://ddong345:8080/article/foo#index);
console.log(myURL.host);//=>ddong345:8080
//同样可以设置,这里就不展示了
  • url的hostname部分(主机名)
const myURL = new URL('https://ddong345:8080/article/foo#index);
console.log(myURL.hostname);//=>ddong345

  • url的origin部分
const myURL = new URL('https://ddong345:8080/article/foo#index);
console.log(myURL.origin);//=>https://ddong345
  • url的pathname部分(路径)
const myURL = new URL('https://ddong345:8080/article/foot?2);
console.log(myURL.pathname);//=>/article/foot
  • url的port部分

端口值可以是空字符串,在这种情况下端口取决于协议/方案:

协议 端口
ftp 21
文件
http 80
https 443
ws 80
wss 443
const myURL = new URL('https://ddong345:8080);
console.log(myURL.port);//=>8080
  • url的protocol部分
const myURL = new URL('https://ddong345:8080);
console.log(myURL.protocol);//=>https
  • url的search部分
const myURL = new URL('https://ddong345:8080/article/foot?2);
console.log(myURL.search);//=>?2

如何获取URL参数的方法

有的时候项目里就要获取到url里的参数,这个时候可以用到URlSearchParams构造函数进行获取
注:URlSearchParams兼容性不好,在ie浏览器运用时,它会报URLSearchParams未定义,

(1)安装url-search-params-polyfill

npm install --save url-search-params-polyfill

(2)在需要URLSearchParams的文件引入

import 'url-search-params-polyfill'
1.页面跳转的时候,获取某个参数
//window.location='https://ddong345/article/details?name=dong'是整个url
let params = new URLSearchParams(new URL(window.location).search);
console.log(params.get('name'))//print dong
  • 获取参数
2.也可以这样去获取
const myURL = new URL('https://ddong345:8080/article/details?name=dong');
console.log(myURL.searchParams.get('name'));//print dong
  • append( name, value)添加指定的键/值
//append可以添加多个相同的键名
myURL.searchParams.append('age', '1');
myURL.searchParams.append('age', '6');
console.log(myURL.href);//=>https://ddong345:8080/article/details?name=dong&age=1&age=6&grend=6#bar
  • 检查参数
myURL.searchParams.has('age')
//==>true
  • 删除参数及其对应的值
myURL.searchParams.delete('age');
console.log(myURL.href);//=>https://ddong345:8080/article/details?name=dong#bar
  • entries():返回一个iterator可以遍历所有键/值对的对象
let params = new URLSearchParams(new URL('https://ddong345/article/details?name=dong').search);
for(var pair of params.entries()) {
    
    console.log(pair[0]+ ', '+ pair[1]); 
 }
//  name    dong
  • sort()按键名排序
//https://ddong345:8080/article/details?name=dong&age=1#bar
myURL.searchParams.sort();
console.log(myURL.href)//=>https://ddong345:8080/article/details?age=1&name=dong#bar
  • set(name, value)设置键名和值
//如果设置相同的键,后面一个会覆盖之前的键名和值,所以要设置新的键名
//https://ddong345:8080/article/details?name=dong&age=1&#bar
myURL.searchParams.set('name','mei')
console.log(myURL.href)
//https://ddong345:8080/article/details?name=mei&age=1&#bar
  • toString():返回搜索参数组成的字符串
//https://ddong345:8080/article/details?name=dong#bar
myURL.searchParams.toString()
//==>name=dong

使用这个方法时,在各个浏览器会不一样,比如在ie11就不支持,需要兼容

下载
npm install url-search-params-polyfill --save
//Main.js添加代码
import 'url-search-params-polyfill';

以上大概就是这样滴,欢迎各位博主指教,相互学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ddong345/article/details/117924360

智能推荐

鼠标滚轮切屏效果_Start2019的博客-程序员秘密

主要采用定位+transition实现切屏效果,简单有效

Android开发中一键获取动态权限_android 播放视频 动态获取权限_楚木Ya的博客-程序员秘密

由于安卓开发中动态权限是一个经常用到的,所以为了减轻各位同学开发中遇到动态权限的问题,这边给大家推荐一个我自己二次封装的第三方方式获取动态权限,也可以参考 https://www.jianshu.com/p/46fddbd0c73f 如果是新手建议先看一下.集成方式:集成方式:注入依赖 Step 1. Add the JitPack repository to your build fi...

精美漂亮简洁的CSS滚动条样式及代码_江寻千的博客-程序员秘密

使用css设置漂亮的滚动条样式 使用css设置漂亮的滚动条样式 使用css设置漂亮的滚动条样式 滚动条 漂亮 美观 样式 好看的滚动条样式html部分<div id='scroll'> <div > <p>雨说:四月已在大地上等待久了…… 等待久了的田圃跟牧场 等待久了的鱼塘和小溪 当田圃冷冻了一冬禁锢着种子 牧场枯黄失去牛羊的踪迹 当鱼塘寒浅留滞着游鱼 小溪渐渐喑哑歌不成调子 雨说,我来了,我来探访四月的大地 我来了,我走得很轻,而且温声细

国密算法gmssl工具编译安装及报错解决_空巢青年_rui的博客-程序员秘密

项目官方文档http://gmssl.org/docs/install.html安装环境ubuntu 18.04安装 make 和 gcc安装步骤下载源码包:项目release地址:https://github.com/guanzhi/GmSSL/releaseswget https://github.com/guanzhi/GmSSL/archive/refs/tags/gmbrowser-v0.1.tar.gz解压安装tar zxf gmbrowser-v0.1.tar.gzcd

【Linux】深入理解进程间通信之共享内存!!_903419的博客-程序员秘密

共享内存概念共享内存函数:1. 创建共享内存共享内存标识符和操作句柄是什么?2. 附加到共享内存3. 共享内存和进程分离:4. 控制共享内存

小马哥---高仿苹果6s 主板H339 6571刷机拆机主板图 低配机_安卓机器的博客-程序员秘密

高仿苹果6s主板型号H339芯片6571这种主板还有一种型号为H339P的机型 是6572上图

随便推点

调制解调器(Modem)_元直数字电路验证的博客-程序员秘密

调制解调器 调制解调器(英语:Modem,modulator-demodulator的英文缩写)是一个将数字信号调变到模拟信号上进行传输,并解调收到的模拟信号以得到数字信号的电子设备。它的目标是产生能够方便传输的模拟信号并且能够通过解码还原原来的数字信号。根据不同的应用场合,调制解调器可以使用不同的手段来传送模拟信号,比如使用光纤,射频无线电或电话线等。 使用普通电话线音频波...

用lua获取当前脚本的路径_justdoit555的博客-程序员秘密

原理是:使用命令提示符的’cd‘命令获取当前的路径,然后写入一个tmp文件(cd.tmp)中,用lua来读取这个文件,最后删除[plain] view plaincopyprint?function currDir()    os.execute("cd > cd.tmp")    local f = io.open("cd.tmp", r)

DTO--数据传输对象_梦染青天的博客-程序员秘密

101  什么是DTO102  域DTO103  定制DTO104  数据传送哈希表105  数据传送行集106  案例系统的层间数据传输107  DTO生成器层间数据传输的过程就是服务的执行者将数据返回给服务的调用者的过程。在非分布式系统中由于有类似Open session in view这样的“怪胎解决方案”的存在,所以层间数据传输的问题并没有充分暴露出来,但是在分布式

关于 Ansible 中的一些奇技淫巧整理_山河已无恙的博客-程序员秘密

分享一些 Ansible 中日常剧本中不常用但是需要知道的一些知识点博文适合了解 Ansible 的小伙伴,可以用作温习理解不足小伙伴帮忙指正对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》对于配置文件,可以通过Jinja2模板来实现。使用方式常用的有变量、for循环、if-else{{ item }}{% else %}

文章标题_xiaoxiao_5210的博客-程序员秘密

【GitChat】精选——双 11 大前端工程师读书清单 转载 2017年11月09日 10:49:25 标签:web前端

RMAN RESTORE fails with RMAN-06023 or ORA-19505 or RMAN-06100_rman-06100 ora-19505_made-in-china的博客-程序员秘密

某个库用nbu做了一个全库备份但不知什么原因,输出日志没了,为了验证备份有效性,使用restore validate database 验证备份有效性。报错RMAN> restore validate database;Starting restore at 07-SEP-2007 20:38:21allocated channel: ORA_DISK_1chann

推荐文章

热门文章

相关标签