1、BOM:
Browser Object Model:浏览器对象模型,专门用于操作浏览器的,但是他使用的不多,远不如ES和DOM,浏览器很多操作都是自带的,
2、window对象:扮演着两个角色:
1、代替全局对象global:保存着全局变量和全局函数
2、【指代当前窗口本身】
属性:专门获取大小
1、获取浏览器的完整的大小:outerWidth/outerHeight
2、*获取浏览器的文档显示区域的大小:innerWidth/innerHeight - 获取每台电脑的浏览器的文档显示区域的大小
3、获取屏幕的完整的大小,跟window没关系:screen.width/height,我们目前学习的都是浏览器应用(网页),并不会去做桌面应用
方法:
1、*打开链接的新方式:
1、当前窗口打开,可以后退
HTML:<a href="url">内容</a>
JS:open("url","_self");
2、当前窗口打开,禁止后退,使用场景:比如电商网站,结账后禁止后退
HTML做不到了,只有JS可以,也不是window能做到,而是另外一个人
history:当前【窗口的历史记录】,他其实可以做的事儿就是前进后退
location:当前【窗口的正在打开的url】,而他有一个API叫做
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");
解释:其实窗口的底层都有一个名字,如果打开了一个已经开着的名字的窗口,新打开的就会把旧的给替换掉,但是给大家的感觉有一点像是刷新的感觉
学习完这一块,我们知道了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的专属事件:
1、window.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 - 会话级,只要浏览器一旦关闭,数据就会死亡
2、localStorage - 本地级,只要不你清空他,他就永远存在
两者的用法是一摸一样的,不用创建,可以直接使用
操作:
1、添加:xxxxStorage.属性名="属性值";
2、读取:xxxxStorage.属性名
3、删除:xxxxStorage.removeItem("属性名");
4、清空:xxxxStorage.clear();//删全部