二十五,BOM浏览器对象模型
一,什么是BOM
我们学习JS主要就是学习这个三个ES标准,DOM对象,BOM对象。
DOM是文档对象模型,是通过JS操作网页(文档)的,BOM:浏览器对象模型,使我们可以通过JS来操作浏览器。
在BOM中为我们提供了一组对象,用来完成对浏览器的操作。BOM对象:,
Window:代表的是整个浏览器窗口,同时window也是网页中的全局对象。在全局作用域中变量作为window的属性保存,函数作为window对象的方法保存。
Navigator:代表的是当前浏览器的信息,通过该对象可用来识别不同的浏览器,
Location:代表当前浏览器地址栏的信息(当我们打开浏览器时就会有一个地址栏),通过地址栏可以跳转页面
History:代表浏览器的历史记录,可以通过该对象来操作浏览器历史记录。但如果我们通过简单的JS对象就可以获取用户的历史浏览记录是很可怕的,用户的隐私就被泄露。由于隐私的原因,该对象不能获取到具体的历史记录(我们并不能通过它获取具体的流量记录)。只能操作浏览器向前或向后翻页(前进后退),而且该操作只在 当次访问时有效 。
screen:代表用户的屏幕信息,通过该对象可以获取到用户的显示器信息。移动端用到的比较多。
徐媛媛注意的是我们讲这个对象,这个对象都不是凭空捏造的,它都会有对应的东西。比如说window代表的就是整个浏览器窗口,Navigator代表的是浏览器信息,Location代表的是地址栏。在使用对象时我们先要弄明白这个对象代表什么,在实现某个功能时,我们需要清除我们需要用到那些对象。
这些BOM对象在浏览器中都是作为window对象的属性保存的。可以通过window对象来使用,也可以直接使用。
二,Navigator:代表的是当前浏览器的信息,通过该对象可用来识别不同的浏览器
Netscape:网景公司(已经倒闭),IE10及以下都是Microsoft Internet Explorer,其他浏览器(包括IE11)都是Netscape(致敬)。由于历史原因navigator中的大部分属性都已近不能帮助我们识别浏览器了,一般我们只会使用userAgent来判断浏览器信息,用户代理等价于浏览器。userAgent是一个字符串,在这个字符串中包含有用来描述浏览器信息的内,不同的浏览器会有不同的userAgent。
console.log(navigator.userAgent);
火狐:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Mozilla基金会5.0版本,win10系统,64位系统 浏览器是72版本的
chrome:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36
HBuilder内置浏览器:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.6.3 Chrome/49.0.2623.111 Safari/537.36 HBuilderX HBuilderX HBuilderX HBuilderX HBuilderX
通过userAgent已经不能判断IE11浏览器了(它把关于微软和IE相关的标识去除了,希望用户能够接受它),如果通过userAgent不能判断,还可以通过一些浏览器中特有的对象来判断浏览器信息。在开发中我们会发现有些对象只在某些浏览器中有如currentStyle,attachEvent只有IE有,如ActiveXObject对象是一个构造函数,用来发送ajax请求的是IE里面独有的,是window对象的属性。但是IE11依旧是判断不出来。
通过in 检查一个对象里是否有某个属性,只能操作浏览器向前或向后翻页(前进后退),而且该操作只在 当次访问时有效 。
三,History:代表浏览器的历史记录,可以通过该对象来操作浏览器历史记录,只能操作浏览器向前或向后翻页(前进后退),而且该操作只在 当次访问时有效 。
history.length获取当次访问数量
back():回退到上一个页面,作用和浏览器回退按钮一样
forward():可以跳转到下一个页面,和前进按钮一样
go():可以用来跳转到指定的页面,需要一个整数作为参数(1,2,-1,-2……)
四,Location:代表当前浏览器地址栏的信息(当我们打开浏览器时就会有一个地址栏),通过地址栏可以跳转页面
Location:该对象中封装了浏览器的地址栏信息,直接输出location,则会得到当前页面的地址栏信息,
assign():跳转到其他页面,作用和直接修改Location一样
reload():重新加载当前页面,作用和刷新按钮一样。需要注意的是,我们在一个文本输入框中写一些东西,在浏览器点击刷新这些东西还在,这是因为缓存,但是有些时候我们需要整个页面刷新不要缓存可以ctrl+F5强制清空缓存。
replace():使用新的页面替换当前页面,不会 生成历史记录,也就是不能回退。