BOM-1

104 阅读3分钟

1、BOM概述:

 1.Browser Object Model - 浏览器对象模型:专门为操作浏览器准备的一些对象,没有任何标准,不像DOMW3C制定标准,所以存在很大的兼容性问题,使用率相对DOM较少
BOM有哪些对象:windowhistorynavigatorlocationscreenevent
个人认为重要的只有两个对象:windowevent

2window对象:在浏览器中扮演着两个角色:
1、代替了Global,充当全局对象 - 保存着全局变量和全局函数
2、指代当前窗口本身

3、*打开网页的新方式:
     知道了:1、跳转用不用a标签无所谓
	   2、有点点用:提升用户的体验感,前端是距离用户最近的,多为用户做考虑
	   3a标签的作用
	1、当前页面打开,可以后退:
		HTML:<a href="url">内容</a>
		      JSopen("url","_self");

	2、当前页面打开,禁止后退:何时:电商网站:结账过后不允许后退了
		HTML:做不了
		      JShistory:当前窗口的历史记录,只有当前窗口有了历史记录才能前进后退
		             location:当前窗口的正在打开的url网址,提供一个方法:
			location.replace("新url"); - 不叫作跳转,叫做替换,当时网址被替换了,页面也会跳转,但是不会产生历史记录

	3、在新窗口打开,可以打开多个
		HTML:<a href="url" target="_blank">内容</a>
		      JSopen("url","_blank");

	4、在新窗口打开,只能打开一个:何时:电商网站:购物车跳转到结账页面,结账页面只允许打开一个
		HTML:<a href="url" target="自定义name">内容</a>
		      JSopen("url","自定义name");
		其实在每一个窗口的底层都有一个名字name_self指向的自己当前的名字
						       _blank始终会得到一个新名字
		如果自定义名称,那么浏览器会发现这个窗口已经打开过了,那再次打开时,会把原来的窗口给替换掉

	扩展:a标签的作用
		1、跳转
		2、锚点
		3、下载:<a href='xx.rar/zip/exe'>文字</a>
		4、打开:<a href='xx.txt/图片后缀'>文字</a>
		5、运行js - a标签不需要绑定事件:<a href='javascript:js代码;'>文字</a>

4、属性和方法:
	打开新窗口:var 新窗口=open("url","target/自定义","width=,height=,left=,top=");
		特殊:1、没有加第三个参数的时候,我们的新窗口会和浏览器融为一体
		           2、添加上第三个参数的时候,我们的新窗口就会脱离浏览器独立存在,而且可以把他保存起来
	关闭窗口:window/新窗口.close();
	移动窗口:新窗口.moveTo(x,y);
	修改窗口的大小:新窗口.resizeTo(newW,newH);

	获取屏幕的大小:screen.width/height
	获取浏览器的完整大小:outerWidth/Height
	获取浏览器文档显示区域的大小:innerWidth/Height


扩展:event对象可以获取鼠标的位置:21、在你的事件处理函数中的第一个形参会自动获取到事件对象event
	2、获取鼠标的位置:
		获取鼠标相对于屏幕的坐标:e.screenX/Y
		获取鼠标相当于文档显示区域的坐标:e.clientX/Y
		获取鼠标相当于网页的坐标:e.pageX/Y

5、定时器:等待一段时间才会执行的代码,可能会反复执行,也可能只会执行一次
     两种:
	1、周期性定时器
		开启:timer=setInterval(回调函数,延时);
		停止:clearInterval(timer);

	2、一次性定时器
		开启:timer=setTimeout(回调函数,延时);
		停止:clearTimeout(timer);
     特殊:1、不管是一次性还是周期性,底层其实都是一样的,甚至两者可以互换
	2、一次性<=>周期性

面试题:函数和循环和定时器,都可以反复执行代码,区别在哪里?- 时机
	1、函数:要么程序员调用几次执行几次,要么用户触发几次执行几次
	2、循环:几乎是一瞬间就完毕了
	3、定时器:需要先等待一段时间才会执行

BOM-2 - 掘金 (juejin.cn)