前言

JavaScript由三个核心部分组成,分别是ECMAScript、BOM、DOM。

浏览器对象模型BOM

BOM提供了很多访问浏览器窗口的接口,包括window对象、location对象、navigator对象、history对象。

window对象

我的上一篇博客记录了关于setInterval和setTimeout的使用,它们都是window对象的方法。

  • setTimeout(arg0, arg1) 超时调用
  • setInterval(arg0, arg1) 间歇调用
    它们都接受两个参数,第一个是要执行的代码,第二个是以毫秒形式表示的时间。

示例:

1
2
3
setTimeout(function() {
alert("Hello world!");
}, 1000);

第二个参数表示等待的时间毫秒数,但经过该时间后指定的代码不一定会执行。JavaScript是一个单线程的解释器,因此一定时间内只能执行一段代码。为了控制要执行的代码,就有一个JavaScript任务队列。这些任务会按照将它们添加到队列的顺序执行。setTimeout()的第二个参数告诉JavaScript在过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执行。

调用setTimeout()会返回一个ID,通过调用clearTimeout(),并将ID作为参数,可以取消未执行的调用计划。

1
2
3
4
5
var timeoutId = setTimeout(function() {
alert("Hello world!");
}, 1000);
clearTimeout(timeoutId);

setInterval()的返回参数同样返回ID,通过clearInterval(),将ID作为参数,来取消未执行的间歇调用。
在使用这两个函数时我们最需要学到的就是setTimeout()和setInterval()之间的相互转化。那就是在使用setTimeout()的时候采用递归调用自己的方式来实现setInterval()的效果。
最后避免使用间歇调用,推荐超时调用。

用于识别客户端浏览器,以下是常用属性:

  • cookieEnabled,表示cookie是否启用。
  • onLine,表示浏览器是否连接到了因特网。
  • platform,浏览器所在的系统平台。
  • plugins,浏览器安装的插件信息。
  • userAgent,浏览器的用户代理字符串。
  • 等。

参考:《JavaScript高级程序设计》