基础篇之我是Bom

83 阅读4分钟

1、BOM:

Browser Object Model:浏览器对象模型,专门用于操作浏览器的,但是他使用的不多,远不如ESDOM,浏览器很多操作都是自带的,

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

1、代替全局对象global:保存着全局变量和全局函数
2、【指代当前窗口本身】
   属性:专门获取大小
        1、获取浏览器的完整的大小:outerWidth/outerHeight
	2、*获取浏览器的文档显示区域的大小:innerWidth/innerHeight - 获取每台电脑的浏览器的文档显示区域的大小
	3、获取屏幕的完整的大小,跟window没关系:screen.width/height,我们目前学习的都是浏览器应用(网页),并不会去做桌面应用

方法:

1、*打开链接的新方式:
	1、当前窗口打开,可以后退
		HTML:<a href="url">内容</a>
		JSopen("url","_self");
        2、当前窗口打开,禁止后退,使用场景:比如电商网站,结账后禁止后退
		HTML做不到了,只有JS可以,也不是window能做到,而是另外一个人
		history:当前【窗口的历史记录】,他其实可以做的事儿就是前进后退
		location:当前【窗口的正在打开的url】,而他有一个API叫做
		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");
解释:其实窗口的底层都有一个名字,如果打开了一个已经开着的名字的窗口,新打开的就会把旧的给替换掉,但是给大家的感觉有一点像是刷新的感觉

学习完这一块,我们知道了2个点:

1、以后的跳转,任何标签都可以
2、提升了用户的体验感
3、a标签的其他用途:
	1、跳转
	2、锚点
	3、下载:<a href="xx.exe/rar/zip/7z...">内容</a>
	4、打开图片和txt文件:<a href="xx.图片的后缀/txt">内容</a>
	5、直接书写JS - 不需要绑定点击事件:<a href="javascript:js代码;">内容</a>

2、打开新窗口/新连接:

var newW=open("url","target","width=?,height=?,left=?,top=?");
特殊:
1、如果你没有传入第三个参数,那么窗口回合浏览器融为一体,浏览器有多大,窗口就有多大
2、如果你传入第三个参数,那么窗口回合浏览器分离开,独立存在
3、可以拿个变量接住这个窗口,以后用于做其他操作
3、关闭窗口:window/newW.close()
4、改变新窗口的大小:newW.resizeTo(新宽,新高)
5、改变新窗口的位置:newW.moveTo(新X,新Y)
6、*window提供的三个框:- 换一个浏览器,样式就不一样了
	警告框:alert("警告文字");
	输入框:var user=prompt("提示文字");
	确认框:var bool=confirm("提示文字");
7、***定时器也是window的:
8、***window的专属事件:
	1window.onload事件 - load:加载:等待其他所有的资源加载完毕后才会执行的代码,放在里面的代码其实是要最后才会执行 - 只要把js放在HTML的后面,就不需要此操作
	2、*window.onresize事件 - 窗口如果大小发生了变化,就会触发,搭配上上面的判断innerWidth可以理解为这是JS版本的css媒体查询
	3、***window.onscroll事件 - 滚动事件,一旦滚动就会触发
		1、获取滚动条当前的位置:window.scrollY
		2、获取元素距离页面顶部有多远:elem.offsetTop/offsetLeft
9、*****本地/客户端存储技术:保存着在浏览器里面的数据
	cookie:淘汰了,存储大小只有2kb,而且操作极其复杂,尤其要到处切割的,最多只能保存30天
	webStorage:H5(概念统称)带来的一个新特性,存储的大小由8mb,永久保存,而且操作非常简单!
	分类2种:
		1、sessionStorage - 会话级,只要浏览器一旦关闭,数据就会死亡
		2localStorage - 本地级,只要不你清空他,他就永远存在
		两者的用法是一摸一样的,不用创建,可以直接使用

操作:
	1、添加:xxxxStorage.属性名="属性值";
	2、读取:xxxxStorage.属性名
	3、删除:xxxxStorage.removeItem("属性名");
	4、清空:xxxxStorage.clear();//删全部