第130篇:BOM(window对象)
好家伙,本篇为《JS高级程序设计》第十二章"BOM"学习笔记
什么是BOM?
BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,
浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。
BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。
----百度百科
1.window对象
window 对象在浏览器中有两重身份,一个是 ECMAScript 中的 Global 对象,另一个就是浏览器窗口的 JavaScript 接口。
这意味着网页中定义的所有 对象、变量和函数都以 window 作为其 Global 对象,都可以访问其上定义的 parseInt()等全局方法。
因为 window 对象的属性在全局作用域中有效,所以很多浏览器 API 及相关构造函数 都以 window 对象属性的形式暴露出来。
因为 window 对象被复用为 ECMAScript 的 Global 对象,所以通过 var 声明的所有全局变量和函数都会变成 window 对象的属性和方法。
使用 let 或 const 替代 var,不会把变量添加给全局对象
var name = "panghu";
let age = "20";
const sex = "boy";
const getage = function(){
console.log(this.name);
console.log(this.age);
console.log(this.sex);
} console.log(window.name);
console.log(window.age);
console.log(window.sex);
getage();

2.窗口关系
top、self和parent
(1)top 对象始终指向最上层(最外层)窗口,即浏览器窗口本身。
(2)self 对象,它是终极 window 属性,始终会指向 window。实际上,self 和 window 就 是同一个对象。
(3)parent 对象则始终指向当前窗 口的父窗口。
3.窗口大小
两套属性: (1)outerWidth 和 outerHeight
(2)innerWidth 和 innerHeight
outerWidth 和 outerHeight 返回浏 览器窗口自身的大小(不管是在最外层 window 上使用,还是在窗格中使用)。
innerWidth 和 innerHeight 返回浏览器窗口中页面视口的大小(不包含浏览器边框和工具栏)。
console.log(window.innerWidth);
console.log(window.innerHeight); console.log(window.outerWidth);
console.log(window.outerHeight);

4.窗口移动和缩放
// 把窗口移动到左上角
window.moveTo(0,0); // 把窗口向下移动 100 像素
window.moveBy(0, 100); // 缩放到 100×100
window.resizeTo(100, 100); // 缩放到 200×150
window.resizeBy(100, 50);
edge禁用了该项属性,所以没有效果图
5.滚动
scroll()、scrollTo()和 scrollBy()方法滚动页面
// 相对于当前视口向下滚动 100 像素
window.scrollBy(0, 100);
//@param {number} a
//@param {number} b
// 正常滚动
window.scrollTo({
left: a,
top: b,
behavior: 'auto'
});
// 平滑滚动
window.scrollTo({
left: a,
top: b,
behavior: 'smooth'
});
来看看效果图:

诶,突然想到一个有意思的点子,
无限滚动,整蛊好友
网页抽风代码如下:
let a = 0;
setInterval(() => {
window.scrollTo({
left: 0,
top: a,
behavior: 'smooth'
});
a = a + 3000;
if (a > 6000) {
a = 0;
}
}, 200)

6.系统对话框
除了平时大家熟悉的alert()
还有confirm()和prompt()
这里我们主要关注一下他们的参数
confirm框: true 表示单击 了 OK 按钮,
false 表示单击了 Cancel 按钮或者通过单击某一角上的 X 图标关闭了确认框。

prompt()框: 用户单击了 OK 按钮,则 prompt()会返回文本框中的值。
如果用户单击了 Cancel 按钮,或者 对话框被关闭,则 prompt()会返回 null。

然后,我们又可以开始整蛊模式了
for (let i = 1; i <= 999; i++) {
alert()
confirm()
prompt("do you like this")
}

7.窗口弹出
7.1.window.open()方法
window.open()方法可以用于导航到指定 URL,也可以用于打开新浏览器窗口。
这个方法接收 4 个参数:要加载的 URL、目标窗口、特性字符串和表示新窗口在浏览器历史记录中是否替代当前加载页 面的布尔值。
通常,调用这个方法时只传前 3 个参数,最后一个参数只有在不打开新窗口时才会使用。
7.2.window.close()方法
window.open()方法用于关闭指定窗口
let wroxWin = window.open("http://www.baidu.com/",
"baidu",
"height=400,width=400,top=100,left=100,resizable=yes");
// 缩放
wroxWin.resizeTo(500, 500);
// 移动
wroxWin.moveTo(100, 100);
//关闭窗口
setTimeout(() => {
wroxWin.close();
}, 3000)

7.3.opener属性
新创建窗口的 window 对象有一个属性 opener,指向打开它的窗口。
8.课后习题
1.什么是window对象?
答:window对象是JavaScript中最常用的内置对象,它表示浏览器窗口。它提供了访问浏览器的功能,包括访问和控制文档、浏览器历史和窗口位置等。
2.Window对象支持哪些属性?
答:Window对象支持的属性包括:window.closed,window.defaultStatus,window.document,window.frames,window.history,window.innerHeight,window.innerWidth,window.length,window.location,window.name,window.opener,window.outerHeight,window.outerWidth,window.pageXOffset,window.pageYOffset,window.parent,window.screen,window.screenX,window.screenY,window.self,window.status,window.top等。、
第130篇:BOM(window对象)的更多相关文章
- BOM window对象方法
window对象方法 alert():弹出一个警告对话框. prompt():弹出一个输入对话框. confirm():弹出一个确认对话框.如果单击“确定按钮”返回true,如果单击“取消 ...
- 浏览器对象模型“BOM”-- window对象
global对象 全局对象 所有的全局变量和全局方法,都可以归在window上 <!DOCTYPE html> <html lang="en"> <h ...
- JS_高程8.BOM window对象(1)
1.全局作用域 var age = 14; window.coloer = "pink"; console.log(delete window.age);//false 使用var ...
- JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}
前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...
- BOM主要对象属性方法总结
BOM window对象 浏览器实例,全局对象 1.窗口位置: screenTop,screenLeft(screenX,screenY):窗口相对于屏幕左边和上边的位置 moveTo(x,y):将窗 ...
- BOM之window对象
双重角色 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过Javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Glob ...
- JavaScript---网络编程(6)-Dom和Bom模型概念讲解(节点获取,window对象)
本节讲Dom和Bom模型概念讲解(节点获取,window对象). out.js: 写了2个输出到页面的函数. function println(param){ document.write(param ...
- Javascript高级编程学习笔记(27)—— BOM(1)window对象1
ECMAScript是JS的核心 但是对于在浏览器中运行的JS,BOM显然才是真正的核心 我们知道JS是由三个部分组成的 BOM.DOM.ECMAScript 之前的文章我们主要介绍的是ECMAScr ...
- JavaScript BOM-11-BOM的核心-window对象; window对象的控制,弹出窗口方法; 超时调用; 间歇调用; location对象常用属性; 位置操作--location.reaplace,location.reload(); BOM中的history对象; Screen对象及其常用属性; Navigator对象;
JavaScript BOM 学习目标 1.掌握什么是BOM 2.掌握BOM的核心-window对象 3.掌握window对象的控制.弹出窗口方法 什么是bom BOM(browser object ...
- JavaScript浏览器对象模型(BOM)之window对象
一.BOM概述 BOM(Browser Object Model)浏览器对象模型,它提供了很多对象,用于访问浏览器的功能. BOM 缺少规范,每个浏览器提供商又按照自己想法去扩展它,那么浏览器共有对象 ...
随机推荐
- [转帖]JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled
目录 一.Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能.我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据. 1.N ...
- [转帖] 这grep咋还不支持\d呢(BRE,ERE,PCRE)
https://www.cnblogs.com/codelogs/p/16060372.html 简介# 对于刚使用Linux不久的同学,肯定会遇到这个问题,就是用grep匹配数字时,发现\d匹配不了 ...
- [转帖]多CPU && 多核CPU | 多进程 && 多线程 | 并行 && 并发
https://cloud.tencent.com/developer/article/1886157?areaSource=&traceId= 文章目录 区分 多CPU &&am ...
- Linux 通过命令方式反编译jar包的方法
第一步: 复制jar包到指定路径. find . -iname "*.jar" -exec scp {} /root/bf/ \; 第二步: 解压缩jar包解压缩出来class文件 ...
- 学习下Redis内存模型
作者:京东零售 吴佳 前言 redis,对于一个java开发工程师来讲,其实算不得什么复杂新奇的技术,但可能也很少人去深入了解学习它的底层的一些东西.下面将通过对内存统计.内存划分.存储细节.对象类型 ...
- js下拉加载更多-详解
场景 有些时候,我们在pc端经常会遇见滚动到底部的时候,去加载下一页的数据, 这个时候,我们就需要知道滚动条什么时候触底了, 如果触底了,就去加载下一页的数据; 在触底的过程中,我们需要注意的是,防止 ...
- 【遇到一个神奇的问题】暂未想到原因,http.Post 传入 nil参数正确,但是传输值为 nil 的 *bytes.BytesReader 就 `invalid memory address or nil pointer dereference`
出错的代码如下: func getEab(ctx context.Context, credentialsJSON string, old *externalAccountKeyResp) (*ext ...
- 佳能F-789SGA升级与超频——互联网Tips存档
佳能F-789SGA简介 佳能F-789SGA是一款性价比极高的科学函数计算器,功能与卡西欧fx-991ES近似,稍强于991ES,弱于991CNX. 来自電卓院亜紀良的评价 来自杨高峰的对比总结 来 ...
- 收藏-即时通讯(IM)开源项目OpenIM-功能手册
OpenIM简介 OpenIM是由IM技术专家打造的开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,目前github star近万.开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时 ...
- 使用rider调试lua
emmylua1.3.5及以上版本支持rider调试,但emmylua的新版本只支持rider2020及以上版本,所以如果想用rider来调试lua,就要升级rider为2020,emmylua插件从 ...