美文网首页
javascript BOM之(一)window.locatio

javascript BOM之(一)window.locatio

作者: web前端技术 | 来源:发表于2020-05-27 13:04 被阅读0次

BOM简介

BOM(Browser Object Model)即浏览器对象模型。
BOM提供了独立于内容 而与浏览器窗口进行交互的对象;
由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window;
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性;
BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。

location对象介绍

通过location 不但可以获取当前页面的地址信息,还可以修改某些属性,实现页面跳转和刷新等。

我们以一个常见的 URL 为例,看看window.location包含哪些属性和方法。

window.location.href     → 'https://www.web.com/search?q=JS#comments'
               .origin   → 'https://www.web.com'
               .protocol → 'https:'
               .host     → 'www.web.com'
               .hostname → 'www.web.com'
               .port     → ''
               .pathname → '/search/'
               .search   → '?q=JS'
               .hash     → '#comments'
window.location.assign('url')
               .replace('url')
               .reload()
               .toString()

window.location 属性一览表

修改属性值

以上属性除了origin是只读属性,其他都可以修改。修改后的效果就是跳转到相应的新地址。

window.location.protocol = 'https'
               .host     = 'localhost:8080'
               .hostname = 'localhost'
               .port     = '8080'
               .pathname = 'path'
               .search   = 'q=vue' // (不需要带 ?)
               .hash     = 'target' // (不需要带 #)
               .href     = 'https://www.web.com'

如何访问 Location对象

window.location返回 Location 类型的一个实例对象,包含当前页面的地址信息。可以通过以下几种方式访问:

window.location          → Location
window.document.location → Location
document.location        → Location
location                 → Location

这几个变量都是等价的,因为它是全局变量。但是建议避免直接用location变量,因为很容易跟其他局部变量混淆,造成不必要的麻烦。比如:

location.protocol; // 'https'

function localFile() {
  const location = '/vue';

  return location.protocol;
  // undefined
  //     这里的局部变量 "location"覆盖了全局变量
}

推荐用window.location,这样一眼就可以看出用的是全局变量。

window.location 方法一览表

.toString().href都是返回 URL,它们之间有区别吗?结果是一样的,性能上稍微有点差别。通过 JSPerf 上的性能测试结果可以看出,.href稍快,通过window.location拼接字符串的形式速度最慢。

性能对比

.assign() 和直接修改href是等价的,那么它们跟.replace()的区别是什么呢?

.assign() 在跳转新地址的同时会留下当前页面的访问记录,点击浏览器返回按钮会回到原来的页面,.replace()则不会保留。

.assign()执行流程:

1. 打开空白页
2. 访问 `www.web.com `(当前页)

3. 加载新页面 
`window.location.assign('https://www.w3schools.com')`
4. 点击浏览器返回按钮
5. 回到 `www.web.com`
`.replace()`执行流程:
1. 打开空白页
2. Go to www.web.com (当前页面

3. 加载新页面  `window.location.assign('https://www.w3schools.com')`
4. 点击浏览器返回按钮
5. 回到  空白页

这个特性在用 JS 控制页面导航时非常重要,稍不注意会造成意外的的页面回退地址。

相关文章

  • javascript BOM之(一)window.locatio

    BOM简介 BOM(Browser Object Model)即浏览器对象模型。BOM提供了独立于内容 而与浏览器...

  • JavaScript之BOM

    什么是BOM 用于处理 浏览器部分的功能,也就是window 与document的关系: 浏览器版本: navig...

  • JavaScript的范围和组成

    javaScript的范围: BOM + DOM + ECMAScript BOM简单说明 BOM即Browser...

  • BOM初步认识

    什么是BOM BOM:Browser Object Model 浏览器对象模型BOM是JavaScript组成之一...

  • JavaScript对象

    JavaScript数据类型 JavaScript对象 BOM DOM

  • JavaScript window对象

    JavaScript BOM BOM全称Browser Object Model,翻译为浏览器对象模型。通过BOM...

  • 【JavaScript的组成】

    JavaScript的组成 JavaScript = ECMAScript + DOM + BOM; ECMASc...

  • JavaScript--BOM

    JavaScript--BOM BOM(browser object model)浏览器对象模型 一、window...

  • 课堂笔记-BOM

    一.BOM 的定义 浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器“对话”。 二.BOM 对...

  • 07_简单说下BOM和DOM的区别

    一、BOM 1、定义 浏览器对象模型BOM(Browser Object Model),它使 JavaScript...

网友评论

      本文标题:javascript BOM之(一)window.locatio

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