Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • JavaScript

    • js 编码指南
    • 日期使用斜杠 点 中划线分隔的不同
    • forEach 会改变原数组值吗
    • 前端表单验证常用的正则表达式 - reg
    • JS 如何取得 URL 里的参数
    • JavaScript 数组去重
    • JavaScript 循环中断研究与总结-关键字篇
    • JavaScript 循环中断研究与总结-用法篇
    • js 中的 Error
    • 跳出 forEach
    • Location 对象
      • Location 对象属性
      • Location 对象方法
    • Date 方法预览
    • Reg 正则中的问题
    • JavaScript toFixed() 方法
    • query 和 params 的使用区别
    • axios post 请求中下载文件流
    • 实用的 js 技巧
    • JS 之数组的几个不 low 操作
    • 深入浅出深拷贝与浅拷贝
    • 如何实现一个深拷贝
    • 使用 iframe 中的一些问题
    • 在 js 中更好地使用数组
    • echarts 在坐标轴两侧各增加一格坐标
    • 从头认识js的事件循环模型
    • moment 根据周截至日算出指定月有几周及开始结束日期
    • 正则 reg 中 /number 的用法
    • 正则 reg 中 match 和 exec 异同
  • TypeScript

  • Vue

  • ElementUI

  • React

  • AntD

  • 前端
  • JavaScript
Henry
2018-03-02
目录

Location 对象

Location 对象包含有关当前 URL 的信息.

Location 对象是 Window 对象的一个部分, 可通过 window.location 属性来访问.

# Location 对象属性

属性 描述 例子 返回值
href
设置或返回完整的 URL. http://example.com:1234/test.htm#part2 http://example.com:1234/test.htm#part2
host 设置或返回主机名和当前 URL 的端口号. 相当于 hostname + port, 当端口为 80 时, 和 hostname 一样 http://example.com:1234/test.htm#part2 example.com:1234
hostname 设置或返回当前 URL 的主机名. http://example.com:1234/test.htm#part2 example.com
port 设置或返回当前 URL 的端口号. http://example.com:1234/test.htm#part2 1234
protocol 设置或返回当前 URL 的协议. http://example.com:1234/test.htm#part2 http:
pathname 设置或返回当前 URL 的路径部分. http://example.com:1234/test.htm#part2 /test.htm
hash 设置或返回从井号 (#) 开始的 URL(锚). http://example.com:1234/test.htm#part2 #part2
search 设置或返回从问号 (?) 开始的 URL(查询部分). http://example.com:1234/test/t.asp?f=hdom_loc_search ?f=hdom_loc_search

注: 当 URL 同时存在 # 和 ? 时, 当 ? 在 # 前面, search 能正确截取, 当 ? 在 # 后面, search 返回为空字符串; 而 hash 只会从 # 开始截取到结尾, 不受位置影响

当一个 Location 对象被转换成字符串, href 属性的值被返回. 这意味着你可以使用表达式 location 来替代 location.href.

很多时候我们需要验证拿到的是否是我们想要的参数, 难道只能先在浏览器地址栏打开 URL, 再从 window.location 中获取? 其实我们可以先创建一个 a 标签然后将需要解析的 URL 赋值给 a 的 href 属性, 然后就得到了一切我们想要的了.

var a = document.createElement('a')
a.href = 'https://tszv.now.sh/pages/c70540/'
console.log(a.host) // tszv.now.sh
1
2
3

利用这一原理, 稍微扩展一下, 就得到了一个更加健壮的解析 URL 各部分的通用方法了.

function parseURL(url) {
  var a = document.createElement('a')
  a.href = url
  return {
    href: url,
    protocol: a.protocol.replace(':', ''),
    host: a.host,
    hostname: a.hostname,
    port: a.port,
    query: a.search,
    params: (function () {
      var ret = {},
        seg = a.search.replace(/^\?/, '').split('&'),
        len = seg.length,
        i = 0,
        s
      for (; i < len; i++) {
        if (!seg[i]) {
          continue
        }
        s = seg[i].split('=')
        ret[s[0]] = s[1]
      }
      return ret
    })(),
    pathname: a.pathname,
    file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
    hash: a.hash.replace('#', ''),
    path: a.pathname.replace(/^([^\/])/, '/$1'),
    relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
    segments: a.pathname.replace(/^\//, '').split('/'),
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

你可以在下面输入框中输入需要查询的 url 来体验一下!

  

如果需要处理复杂的 URL, 请看这篇

# Location 对象方法

属性 描述
assign() 加载新的文档.
reload() 重新加载当前文档.
replace() 用新的文档替换当前文档.
编辑 (opens new window)
#Js#Location
上次更新: 5/27/2023, 1:02:05 PM
跳出 forEach
Date 方法预览

← 跳出 forEach Date 方法预览→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式