JS高程第八章笔记 --BOM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/afr3828/article/details/80322128

JavaScript 高级程序设计-第八章-BOM

BOM 浏览器对象模型(Browser Object Model)。

window 对象

浏览器中 window 对象又是 ES 规定的 global 对象,又是通过 js 访问浏览器窗口的一个接口。

全局作用域

在全局作用域中声明的变量,函数都会变成 window 对象的属性和方法。

窗口关系和框架

如果页面有框架,则每一个框架有自己的 window 对象,他们的集合保存在 frames 集合中。在 frames
集合中,可以通过数值索引(从 0 开始,从左至右,从上到下)或者框架名称来访问相应的 window 对
象。每个 window 对象都有一个 name 属性,其中包含框架的名称。

窗口位置

不同的浏览器有不同的属性、方法可以确定和修改 window 对象位置。

窗口大小

这里面概念很多,不同的浏览器又有不同的实现。。。

导航和打开窗口

window.open() 方法既可以导航至指定的 url,也可以打开新窗口。

间歇调用和超时调用

js 是单线程语言,但可以使用 setTimeout 方法来在指定的时间后执行代码,使用 setInterval 方法来每隔一段时间执行一次代码。

setTimeout

接收两个参数,第一个是执行的代码(可以使字符串形式,可以是一个函数,推荐函数),第二个是等待的时间,单位是毫秒。

但有的时候并不会在指定的毫秒后执行代码,因为 js 是单线程序的解释器,一段时间只能执行一段代码。有一个 js 任务队列。这些任务会按照他们在队列中的顺序执行。setTimeout 的第二个参数的作用是再过多少时间再把代码添加到队列中。如果添加的时候队列为空,那就立马执行,如果添加的时候队列非空,那就等前面的执行完了再执行,因此第二个参数并不是说多少毫秒之后执行,而是多少毫秒之后添加到队列中,具体执行的时间还要看当时任务队列的情况

调用 setTimeout 后会返回一个数值 ID,是计划执行代码的唯一标识符,可以通过他来取消超时调用,例子:

//设置超时调用
var timeoutId = setTimeout(function() {
    alert("Hello world!");
}, 1000);
//注意:把它取消 
clearTimeout(timeoutId);

setInterval

间歇调用是按照指定的毫秒数重复执行代码,当然它也是每隔指定的时间把代码添加到任务队列中。参数也 setTimeout 方法一样,也同样会返回一个间歇调用 ID,例子:

var num = 0;
var max = 10;
var intervalId = null;
function incrementNumber() {
    num++;
//如果执行次数达到了 max 设定的值,则取消后续尚未执行的调用 if (num == max) {
        clearInterval(intervalId);
        alert("Done");
    }
}
intervalId = setInterval(incrementNumber, 500);

但上面的例子完全可以用超时调用来模拟:

var num = 0;
var max = 10;
function incrementNumber() {
    num++;
//如果执行次数未达到 max 设定的值,则设置另一次超时调用 if (num < max) {
        setTimeout(incrementNumber, 500);
    } else {
        alert("Done");
    }
}
setTimeout(incrementNumber, 500);

推荐用超时调用来模拟间歇调用。

系统对话框

  1. alert()
  2. confirm()
  3. prompt()

三个都是同步的,调用的时候代码停止执行。

location 对象

location 既是 window 对象的属性,又是 document 对象的属性。location 可以对 URL 做各种处理

用来识别客户端浏览器。

screen 对象

用来表明客户端的能力,比如显示器像素宽度高度等。

history 对象

history 对象保存着用户上网的历史记录,开发者不能得知用户浏览过的 url,但是可以通过 go(),back(),forward() 来进行跳转。

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页