BOM01 day020

124 阅读3分钟

BOM:Browser Object Model(浏览器对象模型)

专门提供了用于操作浏览器的API - 没有标准,不像DOM由W3C来制定标准,但是大部分浏览器已经统一实现了,唯独老IE与众不同,相当于DOM使用也会较少

window对象:扮演着两个角色:

1、在前端/浏览器端,他代替了全局对象global,保存着全局变量和全局函数

window.变量名;
window.函数名(); - 只不过window可以省略不写

2、指代当前窗口本身

目的:优化用户的体验感,多为用户考虑

1、网页打开新链接的方式

1、替换当前页面,可后退
				HTML:<a/ href="url">内容</a>
				       JS:open("url","_self");

			2、替换当前页面,禁止后退:使用场景:结账后不允许后退
				history对象:保存着当前窗口打开过的历史记录url,只有产生了窗口历史才能前进后退
				location对象:保存着当前窗口正在打开的url
				       JS:location.replace("url") - 替换网址后页面肯定变化,但是替换并不叫跳转,不会产生任何的历史纪录

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

			4、在新窗口打开,只能打开一个:使用场景:打开结账页面时
				HTML:<a/ href="url" target="自定义name">内容</a>
					窗口的底层其实是有名字的,如果重新打开相同的名字,新打开的窗口会替换掉旧的窗口
				       JS:open("url","自定义name");

			扩展:a标签的其他用处:
				1、跳转
				2、锚点
				3、下载:<a href="xx.exe/zip/rar">下载</a>
				4、打开:<a href="xx.txt/jpg...">图片/文本</a>
				5、直接执行js操作:<a href="javascript:js代码;">图片/文本</a>

2、window窗口的属性和方法:

		    属性:
			获取大小:
				1、获取浏览器的完整的大小:outerWidth/Height
				2、*获取浏览器的文档显示区域的大小:innerWidth/Height
				3、获取完整屏幕的大小:没用,我们并不做桌面应用
					screen.width/height
					
			方法:
				1、打开新窗口:var newW=open("url","自定义name","width=?,height=?,left=?,top=?");
					//第三个参数如果没传入,那么新窗口大小和位置会与浏览器融为一体
					//第三个参数如果传入,新窗口会脱离浏览器独立成为一个小窗口
				2、关闭新老窗口:window/newW.close();
				 //以下两个操作:仅仅只能对脱离浏览器的新窗口可用
				3、移动新窗口:newW.moveTo(x,y);
				4、改变新窗口的大小:newW.resizeTo(new宽,new高);
				5、定时器:
				     何时使用:只要过一段时间就希望执行的特效或操作,必须使用定时器
				     如何使用:
					1、周期性:只要不停止会等待时间,反复不断的执行
						开启:timer=setInterval(callback,间隔毫秒数);
						停止:clearInterval(timer);

					2、一次性:等待时间后只会执行一次,就结束
						开启:timer=setTimeout(callback,间隔毫秒数);
						停止:clearTimeout(timer);

				    其实以后你不会是周期性还是一次性都无所谓,因为两者的底层是一样的,用哪个停止其实无所谓,甚至可以互换!

扩展

一、添加过度动画,js的执行速度>图片的加载速度,图片还没加载出来,js就已经执行完毕了,onload事件可解决,加载使用,等谁加载完毕后在执行
					img.onload=function(){
						//过渡动画
					}
二、*获取鼠标的位置:21、获取事件对象event:在事件函数中传入一个形参e即可,自动接收到event对象

2、获取鼠标的位置:
	1、鼠标相对于屏幕的位置:e.screenX/Y
	2、鼠标相对于文档显示区域的位置:e.clientX/Y
	3、*鼠标相对于网页的位置:e.pageX/Y                                        

关不掉的广告案例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			body{
				overflow: hidden;
			}
			*{
				margin: 0;
				padding: 0;
			}
			div{
				width: 300px;
				height: 400px;
				background: pink;
				text-align: right;
				position: absolute;
				right: 0;
				bottom: 0;
				transition: 1s;
			}
			button{
				width:30px;
			}
		</style>
	</head>
	<body>
		<div id="div">
			<button id="btn"> x </button>
		</div>
		
		<script type="text/javascript">
			btn.onclick=function(){
				div.style.bottom="-100%";
				
				setTimeout(()=>{
					div.style.bottom="0%";
				},Math.random()*5000);
			}
		</script>
	</body>
</html>