BOM的核心是window对象,window对象表示浏览器实例;同时还是全局对象global的代理,所以通过var声明的变量、全局函数,可以以window的属性方式访问;但是let、const声明的变量不支持通过window属性的方式访问。
window.top:指向最顶层的窗口window;window.parent:指向父层的窗口,如果当前层已经是最顶层,那么父层还是指向当前层;window.self:始终指向当前层。
window.screenX、window.screenY、window.screenLeft、window.screenTop:这两对属性都是表示浏览器的位置的;window.moveTo(x,y)、window.moveBy(x,y):是移动窗口的一对方法;
window.outerWidth、window.outerHeight(包括浏览器边框)、window.innerWidth、window.innerHeight(不包括浏览器边框):这两对属性都是表示浏览器的宽高;window.resizeTo(x,y)、window.resizeBy(x,y):修改浏览器窗口大小的一对方法;
window.pageXoffset、window.pageYoffset、window.scrollX、window.scrollY:是表示视口文档的滚动位置的属性;window.scroll(x,y)、window.scrollTo(x,y)、window.scrollBy(x,y):是滚动视口文档位置的方法;
参照博客:
let newWin =window.open("地址","窗口名称/_self/_blank/_parent/_top",窗口设置配置对象,是否产生新的历史记录的布尔值):导航到一个新的地址页面。newWin.opener指向打开此页面的window对象实例,如果没有则为null;如果禁止广告弹窗,返回值也会为null;newWin.close()会关闭新打开的窗口,newWin.closed返回新建的窗口是否被关闭;
系统对话框:alert()、confirm()、prompt()、find()、print();这些系统对话框没有HTML\CSS,无法进行样式修改;当这些对话框被执行时,会阻断其他代码的执行,执行完后才会执行其他代码。
window.location/document.location:有关当前窗口页面有关地址信息的对象。将一个地址赋值给此对象,会被自动解析为散列属性的值,通过解析得到的属性,可以获取、修改地址信息;通常只要地址信息改变就会刷新页面,同时添加一条新的历史记录;但是属性hash改变时并不会刷新页面,只会添加一条历史记录,同时会触发hashchange事件。window.location=“url”/location.href="url"会隐形调用location.assign("url"),跳转到新地址页面。location.replace("url")只会跳转到新地址页面不会添加历史记录。location.reload(布尔值)重新加载页面,参数为true会请求后台刷新,否则只加载前端缓存数据。
window.history:浏览器浏览历史记录对象。window.history.length:历史记录条数。window.history.go(num)、window.history.back()、window.history.forward():访问历史记录页面。window.history.pushState(状态对象,“标题”,“相对路径”):跳转新的地址页面,添加一个新的历史记录,不会刷新页面,但会触发hashchange事件,后退触发popState事件。window.history.replaceState(状态对象,“标题”):不会添加一个新的历史记录,只会覆盖当前历史记录,无法后腿。
window.navigator:包含浏览器信息的对象。比如浏览器安装了那些插件、将浏览器注册为默认文件打开程序等。
window.screen:用户客户端信息对象。比如客户端屏幕的宽高、颜色的数据等。