好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

BOM 常用属性和方法

BOM 常用 属性 和 方法

BOM 提供了一些很实用的特性,如定时器、弹出框、窗口尺寸等。

1. 弹出框

BOM 提供了三种弹出框:

window.alert 警告框 window.prompt 提示 框 window.confirm 确认框

三种弹出框都会阻塞 JavaScript 的执行, 用户 与弹出框交互后才会继续执行 代码 。

调用 弹出框时可以省略 window 。

1.1 警告框

警告框在 demo 和调试过程中比较常用。

 window .  alert  (  '弹出!'  )  ; 
 

alert 方法 接受 一个 参数,即要 提示 的 内容 。

警告框没有其他交互,只有单纯的 提示 作用。

因为警告框长得不是很好看,在各个浏览器下的样式也不统一,所以正式产品很少会用到。

1.2 提示 框

提示 框也可以用于 提示 信息,同时还能向 用户 收集信息。

  var   用户 输入的 内容   =  window .  prompt  (  提示 信息 ,  输入框内的 默 认值 )  ; 
 

  var  result  =  window .  prompt  (  '操作不可逆,请输入 "确认" 以继续操作'  ,   '不了不了'  )  ; 

 if   ( result  ===   '确认'  )   { 
   alert  (  '操作成功'  )  ; 
 } 
 

1.3 确认框

确认框可以展示信息,同时询问 用户 是确定还是取消。

  var   用户 选择的结果  =  window .  confirm  (  提示 信息 )  ; 
 

  var  result  =  window .  confirm  (  '确定要 删除 这条信息吗?'  )  ; 

 if   ( result )   { 
   alert  (  ' 删除 成功'  )  ; 
 }   else   { 
  console .  log  (  '已取消'  )  ; 
 } 
 

部分中 后台 系统的关键才做会使用弹出框,因为弹出框 调用 后整个窗口是无法操作的,可以提高警示作用。

2. 定时器

定时器特别常用,前面提到的事件优化中的节流防抖,也有定时器参与。

BOM 提供了两种定时器:

window.setTimeout 在一定时间后做一些事情 window.setInterval 每隔一段事件做一些事情

定时器并不是精确的,会因为上下文环境的各种因素产生偏差。

定时器的最小延迟事件是 4ms ,其在 HTML5 spec 有被描述。

现代浏览器为了优化 后台 性能 损耗等,使在非当前 tab 的 页面 中的定时器的最小延迟在 1000ms 以上。

2.1 setTimeout

setTimeout() 方法 设置 一个 定时器,该定时器在定时器到期 后执行 一个 函数 或指定的一段 代码 。(MDN)

使用 setTimeout 创建的定时器会在一定时间后最一次事情,做完后就再也不会 调用 了。

  setTimeout  (  要做 的事情 ,  多少毫秒后做 )  ; 
 

其中 要做 的事情 可以是个 函数 ,也可以是个字符串,但几乎没有使用字符串的场景,也不推荐使用字符串,原因可以参考 eval 相关 内容 。

  setTimeout  (  function  (  )   { 
  console .  log  (  '1秒过去了'  )  ; 
 }  ,   )  ; 

 setTimeout  (  'console.log("2秒过去了...?")'  ,   )  ; 
 

定时器是可以取消的,一种是利用标志进行取消。

  var  flag  =   false  ; 

 setTimeout  (  function  (  )   { 
   if   ( flag )   return  ; 
  console .  log  (  '哈哈哈哈哈哈哈哈!'  )  ; 
 }  ,   )  ; 

flag  =   !  confirm  (  '五秒后会狂笑!'  )  ; 
 

利用标志,在定时器执行的时候判断,如果标志不成立,则不执行即可。

另一种是利用 clearTimeout 方法 。

  var  timer  =   setTimeout  (  function  (  )   { 
  console .  log  (  '哈哈哈哈哈哈哈哈!'  )  ; 
 }  ,   )  ; 

 if   (  !  confirm  (  '五秒后会狂笑!'  )  )   { 
   clearTimeout  ( timer )  ; 
 } 
 

setTimeout 方法 会返回 一个 数值,这个值是定时器的标志,通过传递给 clearTimeout 就可以取消定时任务。
他们 效果 其实差不多,但是非必要的情况下推荐使用 clearTimeout 。

2.2 setInterval

setInterval 和 setTimeout 区别就在后者只会执行一次,前者会一直反复执行。

  setInterval  (  要做 的事情 ,  多少毫秒后做 )  ; 
 

第 一个 参数和 setTimeout 一样,可以是字符串也可以是 函数 。

  var  count  =   ; 
 setInterval  (  function  (  )   { 
  console .  log  (  (  ++ count )   +   '秒过去了'  )  ; 
 }  ,   )  ; 
 

每过一秒钟,传递给定时器的 函数 就会执行一次。

setInterval 也可以被取消,但不推荐使用标志的形式,建议使用 clearInterval 。

  var  count  =   ; 

 var  timer  =   setInterval  (  function  (  )   { 
  console .  log  (  (  ++ count )   +   '秒过去了'  )  ; 

   if   ( count  >=   )   { 
    console .  log  (  '不要浪费时间盯着这里啦'  )  ; 
     clearInterval  ( timer )  ; 
   } 
 }  ,   )  ; 
 

用法 和 clearTimeout 几乎一致,就不再赘述了。

3. 当前窗口的尺寸

通过 innerHeight 和 innerWidth 属性 就可以 获取 到当前窗口的视口尺寸,视口可以理解为窗口中 显示 页面 的部分。

  function   logSize  (  )   { 
   var  width  =  window . innerWidth ; 
   var  height  =  window . innerHeight ; 

  console .  log  (  '窗口尺寸:'   +  width  +   'x'   +  height )  ; 
 } 

 logSize  (  )  ; 

window .  addEventListener  (  'resize'  ,   function  (  )   { 
   logSize  (  )  ; 
 }  )  ; 
 

4. 其他

API 描述 localStorage 只读的 localStorage 属性 允许你访问 一个 Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。 sessionStorage sessionStorage 属性 允许你访问 一个 ,对应当前源的 session Storage 对象。它与 localStorage 相似,不同之处在于 localStorage 里面存储的数据没有过期时间设置,而存储在 sessionStorage 里面的数据在 页面 会话结束时会被清除。 opener 返回打开当前窗口的那个窗口的引用,例如:在window A中打开了window B,B.opener 返回 A。 parent 返回当前窗口的父 窗口对象 。 scrollTo 滚动到文档中的某个坐标。

5. 小结

开发网页应用的时候,BOM 相关的 属性 和 方法 用到的比较多的就是定时器和 获取 窗口尺寸。

window 下还有类似 parseInt、parseFloat 这样的数学相关的 方法 ,但目前 ES6 标准将他们挪动到了 Number 下,也就是说可以通过 Number.parseInt 来 调用 ,放到了本该属于他们的地方,但项目中如果要使用,推荐使用 shim 或者 poly fill,不然部分浏览器可能 不支持 。

AJAX ? ?常用的 BOM 相关对象

查看更多关于BOM 常用属性和方法的详细内容...

  阅读:40次

上一篇

下一篇

第1节:什么是 JavaScript    第2节:学习环境准备    第3节:调试方案    第4节:JavaScript 变量    第5节:JavaScript 数据类型    第6节:JavaScript if 语句    第7节:for 语句    第8节:JavaScript 算数运算符    第9节:JavaScript 比较运算符    第10节:JavaScript 逻辑运算符    第11节:JavaScript 函数    第12节:JavaScript 表达式    第13节:JavaScript 对象    第14节:JavaScript 字符串    第15节:JavaScript 数字    第16节:JavaScript 数组    第17节:JavaScript switch 语句    第18节:JavaScript while 语句    第19节:JavaScript 的 break 与 continue    第20节:JavaScript with    第21节:document.cookie    第22节:JavaScript Function    第23节:JavaScript Math    第24节:JavaScript Date    第25节:JavaScript RegExp    第26节:JavaScript JSON    第27节:什么是 DOM    第28节:DOM 和 JavaScript 的关系    第29节:获取和操作 DOM 节点    第30节:DOM 与事件    第31节:DOM 事件绑定    第32节:DOM 事件对象    第33节:DOM 事件流    第34节:事件相关的优化    第35节:自定义事件    第36节:表单校验    第37节:什么是 BOM    第38节:常用的 BOM 相关对象    第39节:BOM 常用属性和方法    第40节:AJAX    第41节:异常处理    第42节:三元运算符    第43节:逗号操作符    第44节:void    第45节:typeof    第46节:delete 操作符    第47节:debugger    第48节:getter & setter    第49节:new 运算符与构造函数    第50节:JavaScript 原型    第51节:JavaScript instanceof    第52节:JavaScript this    第53节:严格模式    第54节:作用域    第55节:闭包    第56节:变量提升    第57节:对象包装器    第58节:Lodash    第59节:moment    第60节:swiper    第61节:ECMAScript 6    第62节:Node.js    第63节:Babel    第64节:CSS 预处理器    第65节:代码规范    第66节:TypeScript    第67节:WebComponents    第68节:Vue、React、Angular    第69节:小程序    第70节:JavaScript 关键字    第71节:分号导致的问题    第72节:对象属性访问问题    第73节:this 使用问题    第74节:浮点数精度问题    第75节:独一无二的 NaN    第76节:避免全局污染    第77节:控制台观察对象问题    第78节:根据环境选择语言特性    第79节:相关资源