DOM与BOM(四)

122 阅读4分钟

BOM

浏览器对象模型(BOM)使 JavaScript 有能力与浏览器"对话"。它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。

DOM与BOM对比

DOMBOM
文档对象模型浏览器对象模型
文档当作一个对象来看待浏览器当作一个对象来看待
顶级对象是document顶级对象是window
学习操作页面元素学习浏览器窗口交互的对象
W3C标准规范缺乏标准,兼容性较差

BOM的构成

image.png

Window对象

  • JS访问浏览器窗口的一个接口。
  • 是一个全局对象,定义在全局作用域中的变量、函数都会变成window对象的属性和方法。

弹出框

window.alert("111");
window.confirm("222");
window.prompt("请输入你的学校:");

以上三种方法可以不带window前缀来编写。 image.png

image.png

image.png 窗口加载事件

window.onload=function(){}

或者

window.addEventListener('load',function(){});
  • onload是等页面内容全部加载完毕,再去执行处理函数
  • window.onload传统注册事件方式只能写一次,如果有多个,会以最后一个为准
  • 使用addEventListener则没有限制
document.addEventListener('DOMContentLoaded',function(){})
  • DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等。
  • 当页面的图片很多时,用onload触发需要较长时间,用DOMContentLoaded事件更合适。

调整窗口大小事件

  window.onresize=function(){}
  window.addEventListener('resize',function(){})
  • 只要窗口发生像素变化就会触发该事件
  • window.innerWidth当前屏幕的宽度
  • window.innerHeight 当前屏幕的高度

定时事件

window.setTimeout(调用函数,[延迟的毫秒数])
  • 用于设置一个定时器,定时器到期后执行调用函数,只调用一次
  • 延迟时间单位是毫秒,但是可以省略,省略就默认为0
  • window可以省略
 <script>
       function callback(){
        console.log('滴答滴答');
       }
    //    写法一
       var timer1 = setTimeout(callback,3000);
    //    写法二,不提倡
       setTimeout('callback()',3000);
    //    写法三,直接写函数
    </script>
//timer1为局部变量
window.clearTimeout(timer1)
  • 该方法可以取消之前设置的setTimeout()定时器
  • window可以省略
window.setInterval(调用函数,[间隔的毫秒数])
  • window可以省略
  • 每隔这个时间,就调用一次函数,会重复调用很多次
//timeoutID必须为全局变量
window.clearInterval(timeoutID)

例:

var timer = null;//全局变量,null是一个空对象
begin.addEventListener('click',function(){
   timer = setInterval(function(){
      console.log('123');
      },1000);  
})
 stop.addEventListener('click',function(){
     clearInterval(timer);
  }

Navigator对象

Navigator对象包含有关浏览器的信息,它有很多属性,常用的是userAgent返回由客户机发送服务器的user-agent头部的值。

Location对象

Location对象用于获取或设置窗体的URL(统一资源定位符),并且可以用于解析URL。 URL的一般语法格式为:

protocol://host[:port]/path/[?query]#fragment
http://www.itcast.cn/index.html?name=andy&age=18#link
组成说明
protocol通信协议 常用的http、ftp、maito等
host主机(域名) www.itcast.con
port端口号可选,省略时使用方案的默认端口
path路径,由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
query参数,以键值对的形式通过&符号分隔开来
fragment片段,#后面内容,常见于链接、锚点

Location对象属性

image.png Location常见方法

image.png

History对象

History对象与浏览器历史记录进行交互,该对象包含用户(在浏览器窗口中)访问过的URL。

image.png

Screen对象

Screen 对象中存放着有关显示浏览器屏幕的信息。

Screen对象属性

属性说明
availHeight返回显示屏幕的高度 (除 Windows 任务栏之外)
availWidth返回显示屏幕的宽度 (除 Windows 任务栏之外)
bufferDepth设置或返回调色板的比特深度
colorDepth返回目标设备或缓冲器上的调色板的比特深度
deviceXDPI返回显示屏幕的每英寸水平点数
deviceYDPI返回显示屏幕的每英寸垂直点数
fontSmoothingEnabled返回用户是否在显示控制面板中启用了字体平滑
height返回显示屏幕的高度
logicalXDPI返回显示屏幕每英寸的水平方向的常规点数
logicalYDPI返回显示屏幕每英寸的垂直方向的常规点数
pixelDepth返回显示屏幕的颜色分辨率(比特每像素)
updateInterval设置或返回屏幕的刷新率
width返回显示器屏幕的宽度

JS执行机制

  • 先执行执行栈中的同步任务
  • 异步任务(回调函数)放入任务队列中
  • 一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的同步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行
  • 由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环