1:BOM(Browser  Object  Model)概念

window对象是BOM中所有对象的核心。


2:window属性(较少用)

self:self代表自己,相当于window。 

window.self; //指向自身窗口

  parent:返回父窗口。

window.parent //指向父元素的窗口

top:返回顶层窗口,和parent作用一样。

window.top
console.log(window.parent == window.top);

  opener:窗口开启者。

console.log(window.opener);

 3:window方法

1.window.open(url, name, feature, replace);

window.open('opener.html', 'open');//打开opener.html的页面,窗口的标题open

url:一个可选的字符串,声明了要在新窗口中显示的文档的 URL。如果省略了这个参数,或者它的值是空字符串,那么新窗口就不会显示任何文档。

name:一个可选的字符串,该字符串是一个由逗号分隔的特征列表,其中包括数字、字母和下划线,该字符声明了新窗口的名称。

这个名称可以用作标记 <a> 和 <form> 的属性 target 的值。

feature:自行扩展。replace:自行扩展。

谷歌默认会把系统自动打开的新网页阻止掉,但不阻止通过事件打开新的网页。

2.close:关闭浏览器。(window.close()//关闭浏览器窗口)

但都支持通过别的网页打开的新的网页关闭。

3.alert(显示的文本):弹出窗。(window.alert()//浏览器窗口弹框)

4.confirm(对话框提示的文字):该方法有返回值,点击确定返回true,点击取消返回false。

console.log(window.confirm('今天下雪了吗?')); //点击确认输出true;点击取消输出false

5.prompt(提示信息):输入框。点击确定返回字符串,点击取消返回null。

console.log(window.prompt('请问1+1等于几?'));
//弹出窗口有书写区域,返回值为输入的信息,若不填写为null

4:history对象

该对象包含浏览器窗口访问过的url。

1.属性

length  返回浏览器历史记录的数量

2.方法(使用以下方法返回网页history的记录不增不减)

back() 后退,加载前一个url。

forward() 前进。

go(number)  如果参数是正数,那么就是前进相应的数目,如果是负数那么反之,如果是0那么就是刷新。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>file1</title>
</head>
<body>
<a href="file2.html">file2</a>
<a href="file3.html">file3</a>
<a href="file4.html">file4</a>
<button id="back">回退到上一个页面</button>
<button id="forward">前进到下一个页面</button>
<button id="go">进两步</button>
<script>
console.log(history.length);
var oBack = document.getElementById('back')
oBack.onclick = function () {
history.back()
} var oForward = document.getElementById('forward')
oForward.onclick = function () {
history.forward()
} var oGO = document.getElementById('go')
oGO.onclick = function () {
history.go()
}
</script>
</body>
</html>

页面一的代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>file2</title>
</head>
<body>
<a href="file1.html">file1</a>
<a href="file3.html">file3</a>
<a href="file4.html">file4</a>
<button id="go">后退1步</button>
<button id="back">回退到上一个页面</button>
<button id="forward">前进到下一个页面</button>
<script>
console.log(history.length);
var oBack = document.getElementById('back')
oBack.onclick = function () {
history.back()
}
var oForward = document.getElementById('forward')
oForward.onclick = function () {
history.forward()
}
var oGO = document.getElementById('go')
oGO.onclick = function () {
history.go(-1)
}
</script>
</body>
</html>

页面二的代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>file3</title>
</head>
<body>
<a href="file1.html">file1</a>
<a href="file2.html">file2</a>
<a href="file4.html">file4</a>
<button id="go">刷新</button>
<button id="back">回退到上一个页面</button>
<button id="forward">前进到下一个页面</button>
<script>
console.log(history.length);
var oBack = document.getElementById('back')
oBack.onclick = function () {
history.back()
}
var oForward = document.getElementById('forward')
oForward.onclick = function () {
history.forward()
}
var oGO = document.getElementById('go')
oGO.onclick = function () {
history.go(0)
}
</script>
</body>
</html>

页面三的代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>file4</title>
</head>
<body>
<a href="file1.html">file1</a>
<a href="file2.html">file2</a>
<a href="file3.html">file3</a>
<button id="go">后退1步</button>
<button id="back">回退到上一个页面</button>
<button id="forward">前进到下一个页面</button>
<script>
console.log(history.length);
var oBack = document.getElementById('back')
oBack.onclick = function () {
history.back()
}
var oForward = document.getElementById('forward')
oForward.onclick = function () {
history.forward()
}
var oGO = document.getElementById('go')
oGO.onclick = function () {
history.go(-1)
}
</script>
</body>
</html>

页面4的代码


5:location对象

包含有当前url的相关信息,而history对象不能具体反应url的相关信息。

完整的URL组成部分:协议(schema http:// https://)域名(domain) 端口号(port 80 443)/路径(path)查询字符串(? query)锚点连接(# hash)

属性:

href:设置或返回完整的url。可以为相对路径,也可以为绝对路径。

search:返回url?后面的查询部分。hash :是一个可读可写的字符串,该字符串是 URL 的锚部分(从 # 号开始的部分)。

方法:

assign(url):加载新的文档。

reload(boolean):重新加载文档,当参数是true,任何时候都会重新加载,false的时候,只有在文档改变的时候才会加载,否则直接读取内存当中的。

replace(url):用新的文档代替当前的文档。但不会在 History 对象中生成一个新的记录。当使用该方法时,新的 URL 将覆盖 History 对象中的当前记录。


6:navigator对象

userAgent用户代理信息,通过该属性可获取浏览器及操作系统信息。可通过此对象查看浏览器的信息,项目的不兼容此版本浏览器可给出用户的相关建议。

console.log(navigator.userAgent);


7:window事件

  • onresize:窗口缩放事件。
window.onresize = function () {
console.log(2)
}
  • onload:加载事件网页加载完毕后执行。// 获取浏览器视窗宽度/高度
window.onload = function () {
console.log(document.documentElement.clientWidth)
console.log(document.documentElement.clientHeight)
}
  • onscroll:滚动事件。// 获取浏览器滚动条隐藏的宽度/高度

chrome(body)、火狐、IE(documentElement)

通过或者的方式兼容各版本的浏览器:

  window.onscroll = function () {
    var iScrollT = document.documentElement.scrollTop || document.body.scrollTop;
    var iScrollL = document.documentElement.scrollLeft || document.body.scrollLeft;
    console.log(iScrollL)
  }

从零开始学习前端JAVASCRIPT — 5、JavaScript基础BOM的更多相关文章

  1. 李洪强和你一起学习前端之(3)Css基础和选择器

    大家好! 经过了前面的学习,是不是对前端的学习有了初步的了解.虽然我之前有iOS开发的经验,现在接触一门新的语言,对我来说 有一定的优势,但是一门技术对于谁来说都是公平的,我承认,我在接触新知识的时候 ...

  2. 从零开始学习前端JAVASCRIPT — 1、JavaScript基础

    1:定义:javascript是一种弱类型.动态类型.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类 ...

  3. 从零开始学习前端JAVASCRIPT — 2、JavaScript基础ES5

    1:ES5简介 ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准的修正. 与HTML5规范进程本质类似,ES5通过对现有JavaScript ...

  4. 从零开始学习前端JAVASCRIPT — 10、JavaScript基础ES6(ECMAScript6.0)

    ECMAScript 6.0(简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发 ...

  5. 从零开始学习前端JAVASCRIPT — 7、JavaScript基础EVENT

    1:事件驱动 1)事件:所谓事件就是js侦测到的用户的操作或是页面的一些行为(怎么发生的) 2)事件源对象:引发事件的元素.(发生在谁的身上) 3)事件处理程序:对事件处理的程序或是函数 (发生了什么 ...

  6. 从零开始学习前端JAVASCRIPT — 9、JavaScript基础RegExp(正则表达式)

    1:正则的概念 正则表达式(regular expression)是一个描述字符规则的对象.可以用来检查一个字符串是否含有某个子字符串,将匹配的子字符串做替换或者从某个字符串中取出符合某个条件的子串等 ...

  7. 从零开始学习前端JAVASCRIPT — 8、JavaScript基础COOKIE

    1:通信协议 定义:通信协议是指双方实体完成通信或服务所必须遵循的规则和约定.协议定义了数据单元使用的格式,信息单元应该包含的信息与含义,连接方式,信息发送和接收的时序,从而确保网络中数据顺利地传送到 ...

  8. 从零开始学习前端JAVASCRIPT — 4、JavaScript基础Math和Date对象的介绍

    Math对象的介绍 1:Math对象 Math 对象用于执行数学任务.并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math().您无需创建它,通过把 Math 作为对象使用就 ...

  9. 从零开始学习前端JAVASCRIPT — 3、JavaScript基础string字符串介绍

    1:字符串 JS中的任何数据类型都可以当作对象来看.所以string既是基本数据类型,又是对象. 2:声明字符串 基本数据类型:var sStr = '字符串'; 对象的方法:var oStr = n ...

随机推荐

  1. 微信小程序如何开发制作

    微信小程序如何开发制作 微容SMO是一款微信小程序的免费在线制作工具,用户在微容平台上无需编辑代码,可通过拖拽式操作即可完成小程序的制作,真正意义上实现了小程序零代码免费制作! 消除技术门槛:无需代码 ...

  2. JavaScript函数(二)

    在前面我们已经对函数作了简单的介绍,比如函数的定义.函数的声明.函数的调用和函数的传参等.本节将进一步介绍函数的应用,深度理解函数的各种使用. 函数是一个对象,每个函数时Function类型的一个实例 ...

  3. Mysql 索引优化分析

    MySQL索引优化分析 为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字 ...

  4. Golang 网络爬虫框架gocolly/colly 三

    Golang 网络爬虫框架gocolly/colly 三 熟悉了<Golang 网络爬虫框架gocolly/colly一>和<Golang 网络爬虫框架gocolly/colly二& ...

  5. MarkDown的用法

    # 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题# 无序标题- 文本- 文本- 文本# 有序标题1. 文本2. 文本3. 文本# 图片链接[张驰博 ...

  6. 砸黑板! 正则表达式!!!re 模块

    模块是什么? 一个模块就是一个包含了 python 定义和声明的文件,文件名就是模块名字加上.py 的后缀. 但其实 import 加载的模块分为四个通用类别: 1:使用 python 编写的代码(. ...

  7. 微服务时代TestOps工程师学习总结

    TestOps很新鲜,也是近期衍生的新型职位.那TestOps主要目的是推动整个研发体系与发布体系更多在质量方面.可以这样理解DevOps是从研发推动配合运维和测试,而TestOps是从测试角度推动研 ...

  8. Fiddler中设置断点修改返回结果Response

    测试有时会遇到需要测试返回不同的数据前端展示出来会如何?如果去数据库中的数据会比较麻烦.这样我们可以通过fiddler设置断点来修改返回的数据实现测试不同的数据展示. 1.设置断点 (1)点击菜单栏按 ...

  9. Django资源

    官网地址:https://www.djangoproject.com/ 最新发布版本是:1.11.7 官网提供不同版本的文档:1.7.1.8.1.9.1.10.1.11.2.0.dev 安装不同的版本 ...

  10. mysql存储过程 详细注释

    原文:https://my.oschina.net/u/3582142/blog/1581929