好家伙,本篇为《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对象)的更多相关文章

  1. BOM window对象方法

    window对象方法   alert():弹出一个警告对话框.   prompt():弹出一个输入对话框.   confirm():弹出一个确认对话框.如果单击“确定按钮”返回true,如果单击“取消 ...

  2. 浏览器对象模型“BOM”-- window对象

    global对象 全局对象 所有的全局变量和全局方法,都可以归在window上 <!DOCTYPE html> <html lang="en"> <h ...

  3. JS_高程8.BOM window对象(1)

    1.全局作用域 var age = 14; window.coloer = "pink"; console.log(delete window.age);//false 使用var ...

  4. JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}

    前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...

  5. BOM主要对象属性方法总结

    BOM window对象 浏览器实例,全局对象 1.窗口位置: screenTop,screenLeft(screenX,screenY):窗口相对于屏幕左边和上边的位置 moveTo(x,y):将窗 ...

  6. BOM之window对象

    双重角色 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过Javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Glob ...

  7. JavaScript---网络编程(6)-Dom和Bom模型概念讲解(节点获取,window对象)

    本节讲Dom和Bom模型概念讲解(节点获取,window对象). out.js: 写了2个输出到页面的函数. function println(param){ document.write(param ...

  8. Javascript高级编程学习笔记(27)—— BOM(1)window对象1

    ECMAScript是JS的核心 但是对于在浏览器中运行的JS,BOM显然才是真正的核心 我们知道JS是由三个部分组成的 BOM.DOM.ECMAScript 之前的文章我们主要介绍的是ECMAScr ...

  9. 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 ...

  10. JavaScript浏览器对象模型(BOM)之window对象

    一.BOM概述 BOM(Browser Object Model)浏览器对象模型,它提供了很多对象,用于访问浏览器的功能. BOM 缺少规范,每个浏览器提供商又按照自己想法去扩展它,那么浏览器共有对象 ...

随机推荐

  1. Linux的free命令与OOM的简单总结

    简介 查看操作系统配置最关键的几个命令是 lscpu 查看CPU信息 以及free 查看内存信息. 不过free信息有一个疑惑点 他的 free的值可能很小. 会让搭建产生误解. 这里简单说明一下. ...

  2. vue3.2中setup语法糖父组件如何调用子组件中的方法

    父组件如何调用子组件中的方法 父组件.vue <template> <div> <aa ref="testRef"></aa> &l ...

  3. ant-design-vue 表单验证详解

    表单验证详解 <template> <!-- 第一个坑 :model="formState.youForm" 一定要写成这样 不要写成:model="f ...

  4. 【记录一个问题】VictoriaMetrics的vmstorage因为慢查询导致大量写入失败

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 见上图. 一直以为vmstorage中的查询协程会让位于写 ...

  5. python.exe和pythonw.exe的区别(区分.py、.pyw、.pyc、.pyo文件)

    python和pythonw 在Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序.如下图所示: 它们到底 ...

  6. SqlSugar更新数据

    1.根据实体对象更新 所谓按实体对象更新就是:db.Updateable(参数对象) 有参数的重载 db.Updateable(实体或者集合).ExecuteCommand() //右标题1 下面的所 ...

  7. 私密离线聊天新体验!llama-gpt聊天机器人:极速、安全、搭载Llama 2

    "私密离线聊天新体验!llama-gpt聊天机器人:极速.安全.搭载Llama 2,尽享Code Llama支持!" 一个自托管的.离线的.类似chatgpt的聊天机器人.由美洲驼 ...

  8. Linux 系统Apache配置SSL证书

    在Centos7系列系统下,配置Apache服务器,给服务器增加SSL证书功能,让页面访问是不再提示不安全,具体操作流程如下. 1.第一步首先需要安装mod_ssl模块,执行yum install - ...

  9. Git企业开发控制理论和实操-从入门到深入(三)|分支管理

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总 然后就是博主最近最花时间的一 ...

  10. CH57x/CH58x/CH59x iBecaon广播

    首先要先了解iBecaon.iBecaon是苹果基于BLE广播的一个技术规范:只要设备生产商符合特定标准,就可以要求苹果授权它们在其设备上使用"iBeacon" 商标. 在设备生产 ...