目录
  1. 1. BOM
    1. 1.1. window
      1. 1.1.1. 窗口大小
      2. 1.1.2. 打开窗口
    2. 1.2. History
      1. 1.2.1. length
      2. 1.2.2. back()
      3. 1.2.3. forward()
      4. 1.2.4. go()
    3. 1.3. Navigator
      1. 1.3.1. 基本浏览器标识
    4. 1.4. Location
      1. 1.4.1. assign()
      2. 1.4.2. reload()
      3. 1.4.3. replace()
    5. 1.5. screen
BOM浏览器对象模型

BOM

  • 浏览器对象模型
  • BOM可以使我们通过JS来操作浏览器
  • 在BOM中为我们提供了一组对象,用来完成对浏览器的操作
  • BOM对象
    • Window
      • 代表的是整个浏览器的窗口,同时window也是网页中的全局对象
    • Navigator
      • 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
    • Location
      • 代表当前浏览器的地址栏信息,通过Location可以获取地址栏信息,或者操作浏览器跳转页面
    • History
      • 代表浏览器的历史记录,可以通过该对象来操作浏览器的历史记录
      • 由于隐私原因,该对象不能获取到具体的历史记录,只能操作浏览器向前或向后翻页,而且该操作只在当次访问时有效
    • Screen
      • 代表用户的屏幕的信息,通过该对象可以获取到用户的显示器的相关的信息
  • 这些BOM对象在浏览器中都是作为window对象的属性保存的,可以通过window对象来使用,也可以直接使用

window

  • window对象是BOM的核心,它表示一个浏览器的实例。
  • 在浏览器中我们可以通过window对象来访问操作浏览 器,同时window也是作为全局对象存在的。
  • 全局作用域:
    • window对象是浏览器中的全局对象,因此所有在全局作用 域中声明的变量、对象、函数都会变成window对象的属性 和方法。

窗口大小

浏览器中提供了四个属性用来确定窗口的大小:

  • 网页窗口的大小
    • innerWidth
    • innerHeight
  • 浏览器本身的尺寸
    • outerWidth
    • outerHeight

打开窗口

window.open(URL,name,specs,replace)

  • URL,可选。打开指定的页面的URL。如果没有指定URL,打开一个新的空白窗口
  • name,可选。指定target属性或窗口的名称。支持以下值:
    • _blank - URL加载到一个新的窗口。这是默认
    • _parent - URL加载到父框架
    • _self - URL替换当前页面
    • _top - URL替换任何可加载的框架集
    • name - 窗口名称
  • specs,可选。一个逗号分隔的项目列表。
  • replace,是否创建新的历史记录

History

History对象可以用来操作浏览器向前或向后翻页。History对象保存着用户上网的历史记录, 从窗口被打开的那一刻算起。

length

length属性,可以获取到当成访问的链接数量——history.length;

back()

可以用来回退到上一个页面,作用和浏览器的回退按钮一样——history.back();

forward()

可以跳转下一个页面,作用和浏览器的前进按钮一样——history.forward();

go()

  • 可以用来跳转到指定的页面——history.go(-2);
  • 它需要一个整数作为参数
    • 1:表示向前跳转一个页面 相当于forward()
    • 2:表示向前跳转两个页面
    • -1:表示向后跳转一个页面
    • -2:表示向后跳转两个页面
  • 代表的当前浏览器的信息,通过该对象可以来识别不同的浏览器
  • 由于历史原因,Navigator对象中的大部分属性都已经不能帮助我们识别浏览器了
  • 一般我们只会使用userAgent来判断浏览器的信息,userAgent是一个字符串,这个字符串中包含有用来描述浏览器信息的内容,不同的浏览器会有不同的userAgent

基本浏览器标识

火狐的userAgent

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0

Chrome的userAgent

Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36

IE8

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

IE9

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

IE10

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)

IE11

Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko

  • 在IE11中已经将微软和IE相关的标识都已经去除了,所以我们基本已经不能通过UserAgent来识别一个浏览器是否是IE了

如果通过UserAgent不能判断,还可以通过一些浏览器中特有的对象,来判断浏览器的信息

  • 比如:ActiveXObject
var ua = navigator.userAgent;

console.log(ua);

if(/firefox/i.test(ua)){
alert("你是火狐!!!");
}else if(/chrome/i.test(ua)){
alert("你是Chrome");
}else if(/msie/i.test(ua)){
alert("你是IE浏览器~~~");
}else if("ActiveXObject" in window){
alert("你是IE11,干掉~~~");
}

此处我只有Chrome与IE浏览器,因此只能用这两个来做测试

IE

Chrome

Location

该对象中封装了浏览器的地址栏的信息,location对象提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能

  • 如果直接打印location,则可以获取到地址栏的信息(当前页面的完整路径)

  • 如果直接将location属性修改为一个完整的路径,或相对路径,则我们页面会自动跳转到该路径,并且会生成相应的历史记录

assign()

用来跳转到其他的页面,作用和直接修改location一样

reload()

  • 用于重新加载当前页面,作用和刷新按钮一样
  • 如果在方法中传递一个true,作为参数,则会强制清空缓存刷新页面location.reload(true);

replace()

  • 可以使用一个新的页面替换当前页面,调用完毕也会跳转页面
  • 不会生成历史记录,不能使用回退按钮回退

screen

screen 对象基本上只用来表明客户端的能 力,其中包括浏览器窗口外部的显示器的 信息,如像素宽度和高度等。

该对象作用不大,我们一般不太使用。

文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-02/27/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/JS/BOM%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论