访问与重定向 - location 对象

location接口包含着当前URL上的信息,DocumentWindow 接口都有这样一个链接的Location,分别通过 Document.locationWindow.location 访问

为了方便本文的描述,假定现有URL:

  http://example.com:1234/test.html?user=zfs&hobby=travel#part2

location对象属性

location.href

href是一个可读可写的字符串。可以通过其设置新的链接地址,也可获取现URL上的信息。

console.log(window.location.href)
// http://example.com:1234/test.html?user=zfs&hobby=travel#part2
location.search

search是一个可读可写的属性,读取时返回的是当前URL的查询部分,包括?号。
【注意】截取内容不包含锚点信息(解释:比如http://example.com:1234/test.html?user=zfs&hobby=travel#part2后面的#part2就是锚点信息)

// set
location.href = URL
// get
console.log(window.location.search) // '?user=zfs&hobby=travel'
location.hash

hash是一个可读可写的字符串,读取时返回的是 URL 的锚部分,包括#号
**【注意】**对于当前流行的Vue项目,如果使用的hash路由,那么参数(search)部分也将被当做hash来看待

// set
location.hash=anchorname
// get
console.log(location.hash) // '#part2'

vue中的hash路由模式,假设url:

https://example:1234/index.html#/personal?user=zfs&hobby=traval
//返回的是#号后面的所有字符串
console.log(window.location.hash) // '#/personal?user=zfs&hobby=traval'
location.host

host是个可读可写的属性,可设置或返回当前URL的主机名称和端口号

// set
location.host = host
// get
console.log(location.host)  //  'example.com:1234'
location.hostname

hostname是个可读可写的属性,可设置或返回当前URL的主机名称

// set
location.hostname = hostname
// get
console.log(location.hostname) // 'example.com'
location.port

可读可写,设置或返回当前主机服务端口

// set
location.port = portnumber
// get
console.log(location.port) // '1234'
location.pathname

可读可写,设置或返回当前URL路径部分

// 完整url是 http://example.com:1234/index.html?user=zfs&hobby=travel#part2
// set 
location.pathname = path
// get
console.log(location.pathname)  //  '/index.html'
location.protocol

可读可写,设置或返回当前URL中的协议

// set
location.protocol = path
// get
console.log(location.protocol)  // http:

location 对象方法

assign()

assign()可以载入一个新的文档页面

window.location.assign("http://example.com")
reload()

重新载入当前文档页面。该方法可以接受一个可选的Boolean类型参数。
  当为false时,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果已改变,则再次下载,否则将从缓存中装载该文档。
  当为true时,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。

window.location.reload(true)
replace()

用一个新文档取代当前文档,并且不会在History对象中生成一条新的记录,将用新的URL覆盖当前URL

window.location.replace("http://example.com")

完整案例

var url = document.createElement('a');
url.href = 'https://developer.mozilla.org/en-US/search?q=URL#search-results';
console.log(url.href);      // https://developer.mozilla.org/en-US/search?q=URL#search-results
console.log(url.protocol);  // https:
console.log(url.host);      // developer.mozilla.org
console.log(url.hostname);  // developer.mozilla.org
console.log(url.port);      // (blank - https assumes port 443)
console.log(url.pathname);  // /en-US/search
console.log(url.search);    // ?q=URL
console.log(url.hash);      // #search-results-close-container
console.log(url.origin);    // https://developer.mozilla.org
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java全栈研发大联盟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值