BOM(一):window对象常见事件、定时器

BOM介绍

BOM是浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。

BOM的构成

请添加图片描述

window 对象的常见事件

1.窗口加载事件
传统写法

window.onload = function(){}

事件监听写法

window.addEventListener(“load”,function(){});

window.onload 是窗口 (页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS 文件等), 就调用的处理函数。

注意:

  • 有了 window.onload 就可以把 JS 代码写到页面元素的上方,因为 onload 是等页面内容全部加载完毕,再去执行处理函数。
  • window.onload 传统注册事件方式 只能写一次,如果有多个,会以最后一个 window.onload 为准。
  • 如果使用 addEventListener 则没有限制

例如:

请添加图片描述

如果此时讲script中的获取button元素写在button上方,则点击之后不会弹出警示框,因为浏览器是从上往下阅读代码的.

例二:
请添加图片描述

但是如果script加入了window.onload,此时点击按钮依旧会弹出警示框,原因是window.onload是在页面加载完所有元素之后才进行script阅读,这种传统方式会以最后一次window.onload为准,如果想要多个触发事件,采用事件监听的方式

例三:采用事件监听方式

请添加图片描述

效果为:先弹出点击1,再弹出点击2

DOMContentLoaded方式:

document.addEventListener(‘DOMContentLoaded’,function(){})

  • DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。
  • Ie9以上才支持
  • 如果页面的图片很多的话, 从用户访问到onload触发可能需要较长的时间, 交互效果就不能实现,必然影响用户的体验,此时用DOMContentLoaded 事件比较合适。

例如:

请添加图片描述
先弹出22,再弹出11。
原因:load 等页面内容全部加载完毕,包含页面dom元素、图片、flash、css等等。DOMContentLoaded是DOM加载完毕,不包含图片、falsh、css等就可以执行 加载速度比load更快一些。

2.调整窗口大小事件
传统方式

window.onresize = function(){}

监听事件方式

window.addEventListener(“resize”,function(){});

window.onresize 是调整窗口大小加载事件, 当触发时就调用的处理函数。

例如:

请添加图片描述

注意:

  • 只要窗口大小发生像素变化,就会触发这个事件。
  • 利用这个事件完成响应式布局。 window.innerWidth 当前屏幕的宽度

定时器

1.setTimeout() 定时器

window.setTimeout(调用函数, [延迟的毫秒数]);

  • setTimeout() 方法用于设置一个定时器(只运行一次),该定时器在定时器到期后执行调用函数。
  • window 可以省略。
  • 这个调用函数可以直接写函数,或者写函数名或者采取字符串‘函数名()'三种形式。第三种不推荐
  • 延迟的毫秒数省略默认是 0,如果写,必须是毫秒。
  • 定时器可能有很多,经常给定时器赋值一个标识符。(给定时器起一个变量名)
  • 1000毫秒等于一秒

请添加图片描述

请添加图片描述

2.停止 setTimeout() 定时器

window.clearTimeout(timeoutID)

clearTimeout()方法取消了先前通过调用 setTimeout() 建立的定时器。

注意:

  • window 可以省略。
  • 里面的参数就是定时器的标识符 。

请添加图片描述

3. setInterval() 定时器

window.setInterval(回调函数, [间隔的毫秒数]);

setInterval() 方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。

注意:

  • window 可以省略。
  • 这个调用函数可以直接写函数,或者写函数名或者采取字符串 ‘函数名()’ 三种形式。
  • 间隔的毫秒数省略默认是 0,如果写,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。
  • 因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。
  • 第一次执行也是间隔毫秒数之后执行,之后每隔毫秒数就执行一次。
  • setInterval是反复调用函数,前面的setTimeout只调用一次
    请添加图片描述
    4.停止 setInterval() 定时器

window.clearInterval(intervalID);

clearInterval()方法取消了先前通过调用 setInterval()建立的定时器。

注意:

  • window 可以省略。
  • 里面的参数就是定时器的标识符 。
    请添加图片描述
    请添加图片描述

location 对象

window 对象提供了一个 location 属性用于获取或设置窗体的 URL,并且可以用于解析 URL 。 因为这个属性返回的是一个对象,所以我们将这个属性也称为 location 对象。

1.URL
统一资源定位符 (Uniform Resource Locator, URL) 是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的 URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

URL 的一般语法格式为:

protocol://host[:port]/path/[?query]#fragment

http://www.itcast.cn/index.html?name=andy&age=18#link

请添加图片描述

2.location 对象的属性

请添加图片描述

案例:5秒钟之后自动跳转页面
案例分析:

  • 利用定时器做倒计时效果 时间到了,就跳转页面。
  • 使用 location.href

请添加图片描述
action属性的作用是:提交表单后,将表单数据发送到指定位置,name里面的值作为参数用来传递。
点击登录按钮后,name的值uname传递给第二个页面的location.search

3.location 对象的方法

请添加图片描述
请添加图片描述

点击之后可以回退到原来页面

请添加图片描述

加载页面功能

请添加图片描述

navigator 对象

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

if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i))) {
    
    
    window.location.href = "";     //手机
 } else {
    
    
    window.location.href = "";     //电脑
 }

history 对象

window 对象给我们提供了一个 history 对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的 URL。

请添加图片描述

请添加图片描述

猜你喜欢

转载自blog.csdn.net/weixin_53912712/article/details/128597213