js完全解析url和拼接

我们经常会遇到需要自己解析url地址,或者是自己拼接url,因此我们需要一个专门对url处理的js

1、理解url

url由6部分组成

例如:
https://blog.csdn.net/weixin_43236062/article/details/109065450?id=1&name=huangnan ​

  • 协议

    • 常见的协议有两种,一种是http 一种是https 后面接://
  • 域名/ip
    • blog.csdn.net / 192.169.1.0 DNS服务器把域名解析成ip ​
  • 端口
    • 范围0-65535 http默认80 https默认443
  • hash
    • hash 在url最后以#开头的一段路径
    • 还有一种是history,history就是‘’,例子就是history
  • 路径
    • /weixin_43236062/article/details/109065450 也相当于文件的名称
  • 参数
    • ?id=1&name=huangnan. 在?后面加上,由&切割,&前是键值,&后是值

综合起来就可以得出

协议://域名(ip):端口/hash/路径?参数

url也可以简写,正常来说除了路径,其他都可以不写,相当于相对路径。

我们了解url以后,就可以开始解析或者拼接url了

2、解析url

2.1、全量解析

全量解析,我们可以借助a标签。
a标签通过打印,我们会发现一些比较关键的用法:
origin、hash、pathname这些都是我们常用的属性

const parse = (path) => {
    let data = {
        path:'',
        query:{},
        origin:'',
        hash:''
    }
    var tag = window.document.createElement('a')
    tag.href = path

    data.origin = tag.origin
    data.hash = tag.hash
    data.path = tag.pathname

    let pathList = tag.search.split('?')
    //获取query
    if(pathList[1]){
        let queryList = pathList[1].split('&')
        queryList.map((item)=> {
            let queryData = item.split('=')
            data.query[queryData[0]] = queryData[1]
        })
    }

    return data
}

2.2、只取参数

const parseQuery = (path) => {
    let query = {},
    let queryList = path.split('?')
    //获取query
    if(queryList[1]){
        let queryDataList = queryList[1].split('&')
        queryDataList.map((item)=> {
            let queryData = item.split('=')
            data.query[queryData[0]] = queryData[1]
        })
        return query
    }else{
    	return false
	}
}

3、合并url

const build = (path, query = {}) => {
    if (!_isObject(query)) {
        console.error('请传入正确的query')
        return
    }
    let str = ''
    Object.keys(query).forEach(key => {
        str += `&${key}=${encodeURIComponent(query[key])}`
    })
    return `${path}?${str.slice(1)}`
}

更多关于js完全解析url和拼接知识请查看下面的相关链接

(0)

相关推荐

  • js如何准确获取当前页面url网址信息

    在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结. 下面我们举例一个URL,然后获得它的各个组成部分:http://i.cnblogs.com/EditPosts.aspx?opt=1 1.window.location.href(设置或获取整个 URL 为字符串) var test = window.location.href; alert(test); 返回:http://i.cnblogs.com/EditPosts.as

  • js url传值中文乱码之解决之道

    在websphere 中使用的是url=encodeURI(encodeURI(url)); //用了2次encodeURI 测试成功,第一次转换没有尝试, 处理方法一. js 程序代码:url=encodeURI(url);注意是整个URL 服务器端的代码:String linename = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"); 处理方法

  • JS获取URL中参数值(QueryString)的4种方法分享

    方法一:正则法 复制代码 代码如下: function getQueryString(name) {    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');    var r = window.location.search.substr(1).match(reg);    if (r != null) {        return unescape(r[2]);    }    return null;}/

  • JS动态修改图片的URL(src)的方法

    本文实例讲述了JS动态修改图片的URL(src)的方法.分享给大家供大家参考.具体如下: 下面的JS代码可以动态修改图片地址,以显示一张新的图片,实际上是通过修改图片的src属性来实现的 <!DOCTYPE html> <html> <head> <script> function changeSrc() { document.getElementById("myImage").src="hackanm.gif"; }

  • javascript/jquery获取地址栏url参数的方法

    使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下 复制代码 代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识 2.jquery获取url参数比较复杂,要用到正则表达式,所以学好javascript正则式多么重要的事情 首先看看单纯的通过javascript是如何来获取url中的某个参数 复制代码 代码如下: function

  • JS URL传中文参数引发的乱码问题

    解决方法如下: 1.在JS里对中文参数进行两次转码 复制代码 代码如下: var login_name = document.getElementById("loginname").value; login_name = encodeURI(login_name); login_name = encodeURI(login_name); 2.在服务器端对参数进行解码 复制代码 代码如下: String loginName = ParamUtil.getString(request, &

  • JS验证URL函数 正则

    这个url的正则表达式判断的JavaScript!比较全面的.它验证的情况包括IP,域名(domain),ftp,二级域名,域名中的文件,域名加上端口!用户名等等信息,貌似作者也是在网上找的,我从一个项目代码中扣出来的,是我见过的最强最全面的url验证方式!太猛了,贴在这里与大家分享,URL的验证实在是很频繁. function IsURL (str_url) { var strRegex = '^((https|http|ftp|rtsp|mms)?://)' + '?(([0-9a-z_!~

  • 在jsp页面如何获得url参数

    当一个url过来时,如:http://localhost:8080/pro/demo/hello.jsp?name=john,在hello.jsp页面,我们可以这样得到name的值: 复制代码 代码如下: <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getSer

  • JS对URL字符串进行编码/解码分析

    虽然escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊 字符进行过滤.但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问 题.例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是 UTF-8),使用escape()转换传输中文字串就会出现乱码问题. 以下是JS下对URL进行编/解码的各种方法: escape 方法:返回一个可在所有计算机上读取的编码

  • js获取url参数值的两种方式

    方法一:正则分析法 复制代码 代码如下: function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return n

随机推荐