美文网首页前端大杂烩
重写URL返回query对象信息

重写URL返回query对象信息

作者: 写写而已 | 来源:发表于2024-01-18 17:42 被阅读0次

在使用URL转换链接的时候,query无法很直观的体现,且想要根据key获取值的时候不方便,
如果导入jsuri等工具解析又太复杂,使用起来也麻烦
所以考虑使用js的原始属性new URL在保留URL的用法的同时,改动最小的情况下,增加一个对象形式的query

  1. 纠正与兼容用户拼接了多个?的情况
  2. 无传入数据时,使用当前的location.href解析

如下图:

search内的?q=books?name=简书&id=10087都能顺利解析

image.png
const _URL = URL
window.URL = function (url, base) {
    url = url || location.href
    let u = new _URL(url, base)
    if (u) {
        function get() {
            let s = u.search
            let arr = {}
            if (s) {
                s = s.substring(1).replace(/\?/g, '&').split('&')
                s.forEach(item => {
                    let t = item.split('=')
                    arr[t[0]] = decodeURIComponent(t[1] || '')
                })
            }

            return arr
        }
        u.query = get()
    }
    return u
}
let url = new URL('https://user:pass@www.test.com:81/index.html?q=books?name=简书&id=10087#fragment')
console.log(url)
console.log(url.query.name)

相关文章

  • Apache中重写URL参数(Query String)

    Apache中重写URL参数(Query String) URL参数(Query String)是URL里面“?”...

  • window.location属性

    该属性返回url的解析 location.search 获取query部分信息 附: String.prototy...

  • 小程序 WXML节点信息查询

    1、节点信息查询 总结:第一步,返回节点查询对象:const query = wx.createSelectorQ...

  • nodejs中的url模块

    url有一个parse方法,这个方法返回一个json对象。json对象里有两个常用的属性。一个是query,表示请...

  • 关于BOM整理

    浏览器尺寸 GET传参解析 根据URL的query返回对象形式 终端判断 完美世界 网络来源 调用 360路由终端...

  • 路由规则中定义参数

    一、使用query方式传递参数通过URL后面查询字符串传递参数给路由,路由对象可以通过$route.query对象...

  • Tornado 数据库_ORM_SQLAlchemy_查询操作

    上节课使用query从数据库中查询到了结果,但是query返回的对象是直接可用的吗? query: 根据以上返回是...

  • apache URL重写

    URL重写 URL rewrite介绍 URL重写 一、URL重写介绍 Apached的重写功能,即是mod_re...

  • 小哥模块

    1. 查询小哥信息 url: /user/query/worker/infomethod: get/json 提交...

  • nodejs url 内置模块

    1. parse 反序列化(将url字符串解析成对象) 语法:url.resolve (url字符串,query参...

网友评论

    本文标题:重写URL返回query对象信息

    本文链接:https://www.haomeiwen.com/subject/bfhdodtx.html