第130篇:BOM(window对象)

bom,window,对象 · 浏览次数 : 54

小编点评

**什么是BOM?** BOM(Browser Object Model) 是指浏览器对象模型,它是用于描述浏览器窗口与对象之间层次关系的模型。浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。

正文

好家伙,本篇为《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对象)相似的内容:

第130篇:BOM(window对象)

好家伙,本篇为《JS高级程序设计》第十二章"BOM"学习笔记 什么是BOM? BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型, 浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。 BOM由多个对象组成,其中代表浏

第一百零五篇:变量的原始值和引用值

好家伙,JS基础接着学, 本篇内容为《JS高级程序设计》第四章学习笔记 1.原始值和引用值 ECMAScript变量可以包含两种不同类型的数据:原始值和引用值。原始值(primitive value)就是最简单的数据,引用值(reference value)则是由多个值构成的对象。 在把一个值赋给变

第一百零六篇:变量的不同声明(var,let和const的不同)

JS关于变量的声明,变量提升,暂时性死区

第一百零七篇:基本数据类型(undefined,null,boolean类型)

好家伙, 本篇内容为《JS高级程序设计》第三章学习笔记 1.数据类型 ECMAScript有6种简单数据类型(称为原始类型): Undefined, Null, Boolean, Number, String和Symbol。 Symbol (符号)是ECMAScript6新增的。还有一种复杂数据类型

第一百零八篇:最常用的基本数据类型(Number类型)

最常用的基本数据类型(Number类型)

第一百一十篇:内存泄漏和垃圾回收(JS)

好家伙,本篇内容为《JS高级程序设计》第四章的学习笔记 1.内存泄露 1.1.什么是内存泄漏? 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏缺陷具有隐蔽性、积累性的特征,比其

第一百一十一篇:基本引用类型Date

好家伙,本篇为《JS高级程序设计》第五章的学习笔记 1.基本引用类型 引用值(或者对象)是某个特定引用类型的实例,在ECMAScript中,引用类型是把数据和功能组织到一起的结构,(像极了“类”) 经常被人错误的称作“类”。 虽然从技术上讲JavaScript是一门面向对象语言,但是ECMAScri

第一百一十二篇: JS数组Array(一)数组基本用法

好家伙, 1.数组 Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大区别。 跟其他语言中的数组一样,ECMAScript 数组也是一组有序的数据, 但跟其他语言不同的是,数组中每个槽位可以存储任意类型的数据。 这意味着可以创建一个数组,它的第

第一百一十四篇: JS数组Array(三)数组常用方法

好家伙,本篇为《JS高级程序设计》第六章“集合引用类型”学习笔记 1.数组的复制和填充 批量复制方法 copyWithin(),以及填充数组方法fill()。 这两个方法的函数签名类似,都需要指定既有数组实例上的一个范围,包含开始索引,不包含结束索引。 使用这个方法不会改变数组的大小。 1.1.fi

第一百一十五篇: JS集合引用类型Map

好家伙,本篇为《JS高级程序设计》第六章“集合引用类型”学习笔记 1.Map ECMAScript6以前,在JavaScript中实现“键/值”式存储可以使用object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。 但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定