💖💕浏览器的API💕💖

178 阅读6分钟

theme: vuepress

一、前言

在这个技术飞速发展的时代,我们作为一前端开发的工作者,浏览器自然成了我们最亲密的朋友,但是我们真的了解我们这位最熟悉得朋友么?我承认,浏览器对我来说是最熟悉的陌生人,我和他每天都会见面交流,但是我对其并没有深入了解,所以,今天花点时间,来稍微小结性的了解下我们的这位朋友吧!

二、浏览器对象模型

BOM :Browser Object Model(浏览器对象模型),浏览器模型提供了独立于内容的、可以与浏览器窗口进行滑动的对象结构,就是浏览器提供的 API。

  • window 对象——BOM 的核心,是 js 访问浏览器的接口,也是 ES 规定的 Global 对象
  • location 对象:提供当前窗口中的加载的文档有关的信息和一些导航功能。既是 window 对象属 性,也是document 的对象属性
  • navigation 对象:获取浏览器的系统信息
  • screen 对象:用来表示浏览器窗口外部的显示器的信息等
  • history 对象:保存用户上网的历史信息
  • 存储对象:Web 存储 API 提供了 sessionStorage (会话存储) 和 localStorage(本地存储)两个存储对象来对网页的数据进行添加、删除、修改、查询操作。localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

1、Window对象

windows 对象是整个浏览器对象模型的核心,其扮演着既是接口又是全局对象的角色。

方法名描述
alert()系统警告对话框,接受字符串参数并显示
confirm()系统确认对话框,可以提供确认或取消两种事件,返回布尔值类型
prompt()提示对话框,可以对用户展示确认,取消事件外,还可以提供文本域.prompt(msg, default)长锡矿外部是msg,内部是default
open()可以导航到指定的地址,也可以打开一个新的浏览器窗口。window.open(url, 窗口目标, 一个特定的字符串, 一个新页面是否取代浏览器历史记录中当前加载页面的布尔值)
onerror()事件处理程序,当未捕获的异常换博导调用栈上时就会调用它,并且把错误的消息输出到控制台上。window.onerror(错误信息, 存放错误的JS代码所在的文件url, 文件中发生错误的行数)
setTimeout()超时调用,在指定的时间过后执行代码,window.setTimeout(执行的方法, 时间毫秒)
setInterval()间歇调用,每隔指定时间就执行一次,window.setTimeval(执行的方法, 时间毫秒)
1.确认窗口位置
属性名描述
screenLeft返回相对于屏幕窗口的x坐标
screenTop返回相对于屏幕窗口的y坐标
screenX返回相对于屏幕窗口的x坐标
screeY返回相对于屏幕窗口的y坐标
moveBy(x,y)可相对窗口的当前坐标把它移动指定的像素。
moveTo(x,y)把窗口的左上角移动到一个指定的坐标。
2.确认窗口大小
属性名描述
innerWidth返回窗口的文档显示区的宽度。
innerHeight返回窗口的文档显示区的高度。
outerWidth返回窗口的外部宽度,包含工具条与滚动条。
outerHeight返回窗口的外部高度,包含工具条与滚动条。
resizeTo(x,y)把窗口的大小调整到指定的宽度和高度。

2、Location对象

属性名描述
hashurl的hash值
host服务器名称+端口
hostname只含服务名字
herf当前加载页面完整的url
parthname返回的URL路径
port返回一个URL服务器使用的端口号
protocol返回一个URL协议
search参数

3、Navigator 对象

属性名描述
appCodeName返回浏览器的代码名
appName返回浏览器的名称
appVersion返回浏览器的平台和版本信息
cookieEnabled返回指明浏览器中是否启用 cookie 的布尔值
platform返回运行浏览器的操作系统平台
userAgent返回由客户机发送服务器的user-agent 头部的值
geolocation返回浏览器的地理位置信息
language返回浏览器使用的语言
onLine返回浏览器是否在线,在线返回 ture,否则返回 false
product返回浏览器使用的引擎(产品)
javaEnabled()指定是否在浏览器中启用Java
taintEnabled()规定浏览器是否启用数据污点(data tainting)

4、History对象

属性名描述
length返回历史列表中的网址数
go()加载 history 列表中的某个具体页面
back()加载 history 列表中的前一个 URL
forword()加载 history 列表中的下一个 URL

5、e 事件监听的e

属性名描述
e.clientX鼠标的坐标到页面左侧的距离
e.clientY鼠标的坐标到页面顶部的距离
e.offsetX鼠标坐标到元素的左侧的距离
e.offsetY鼠标坐标到元素的顶部的距离
e.clientWidth可视区域的宽度
e.clientHeight可视区域的高度
e.target.offsetLeft该元素外边框距离包含元素内边框左侧的距离
e.target.offsetTop该元素外边框距离包含元素内边框顶部的距离

6、存储对象

属性名描述
length返回存储对象中包含多少条数据
key(n)返回历史列表中的网址数
getItem(keyname)返回指定键的值
setItem(keyname, value)添加键和值,如果对应的值存在,则更新该键对应的值
removeItem(keyname)移除键
clear()清除存储对象中所有的键
window.localStorage在浏览器中存储 key/value 对。没有过期时间。
window.sessionStorage在浏览器中存储 key/value 对。 在关闭窗口或标签页之后将会删除这些数据

三、浏览器事件模型

1、关于事件

事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水。当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了。

  • 事件可能是用户在某些内容上的点击、鼠标经过某个特定元素或按下键盘上的某些按键。
  • 事件还可能是 Web 浏览器中发生的事情,比如说某个 Web 页面加载完成,或者是用户滚动窗口或改变窗口大小。

2、事件订阅

浏览器的交互是通过浏览器的内置事件响应实现的,常见的浏览器事件有文档载入(load),元素点击(click)等,订阅浏览器事件可以通过如下方式实现。

  • HTML属性的事件句柄,如:onclick
  • DOM属性的事件句柄,在js中为dom添加onclick方法
  • 事件句柄注册:IE8+(window的两个方法addEventListener和removeEventListener)和IE8及以下(attachEvent与detachEvent)

3、事件传播

(1)、捕获阶段

从上到下,从外到内捕获事件。
addEventListener(type, listen, useCapture)的最后一个参数指示了在哪个阶段调用事件回调。如果是true,那么在type事件的捕获阶段将会调用listen方法,如果是false,那么就在冒泡阶段触发。

(2)、目标阶段
(3)、冒泡阶段

和捕获事件相反的顺序来冒泡到window

4、阻止事件传播

通过执行e.propagation()来阻止事件的传播,包括捕获阶段和冒泡阶段的事件传播。

5、阻止事件默认行为

通过执行e.preventDefault()来阻止事件的默认。

四、浏览器请求相关内容