JavaScript:BOM
目录
一、BOM介绍
1、BOM的构成
二、window对象常用方法
1、窗口加载事件
2、window.onresize
3、confirm()方法
4、open()方法
5、setTimeout()定时器
6、this的使用
7、JS是单线程
8、JS执行机制
9、URL
10、location对象的属性
11、document对象
12、Date对象
13、navigator 对象
14、history对象
一、BOM介绍
BOM ( BrowserObject Model ) 即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互
的对象,其核心对象是window。
BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。
BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是
Netscape浏览器标准的一部分。
BOM与DOM的区别:
DOM | BOM |
文档对象模型 | 浏览器对象模型 |
DOM就是把「文档」当做一个「对象」来看待 | 把「浏览器」当做一个「对象」来看待 |
DOM的顶级对象是document | BOM的顶级对象是window |
DOM主要学习的是操作页面元素 | BOM学习的是浏览器窗口交互的一些对象 |
DOM是 W3C标准规范 | BOM是浏览器厂商在各自浏览器上定义的,兼容性较差 |
1、BOM的构成
window对象是浏览器的顶级对象,它具有双重角色。
1.它是JS访问浏览器窗口的一个接口。
2.它是一个全局对象。定义在全局作用域中的变默、函数都会变成window对象的属性和方法
在调用的时候可以省略window,前面学习的对话框都属于window对象方法,如alert(、prompt()
等。
注意:window下的一个特殊属性window.name
二、window对象常用方法
方法名 | 说明 |
prompt( ) |
显示可提示用户输入的对话框 |
alert( ) |
显示带有一个提示信息和一个确定按钮的警示框 |
confirm( ) |
显示一个带有提示信息、确定和取消按钮的对话框 |
close( ) |
关闭浏览器窗口 |
open( ) |
打开一个新的浏览器窗口,加载给定 URL 所指定的文档 |
setTimeout( ) |
在指定的毫秒数后调用函数或计算表达式 |
setInterval( ) |
按照指定的周期(以毫秒计)来调用函数或表达式 |
1、窗口加载事件
window .onload = function () { }或者
window .addEventListener ( "load" , function ( ) { });
window.onload是窗口(页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文
件、CSS文件等),就调用的处理函数。
注意︰
1.有了window.onload就可以把JS代码写到页面元素的上方,因为onload是等页面内容全部加载完
毕,再去执行处理函数。
2.window.onload传统注册事件方式只能写一次,如果有多个,会以最后一个window.onload为准。
document.addEventListener ( ' DOMContentLoaded' ,function() { } )
DOMContentLoaded事件触发时,仅当DOM加载完成,不包括样式表,图片,flash等等。
如果页面的图片很多的话,从用户访问到onload触发可能需要较长的时间,交互效果就不能实现,必
然影响用户的体验,此时用DOMContentLoaded事件比较合适。
load与DOWContentLoaded的区别
1、load 等页面内容全部加载完毕,包含页面dom元素图片 flash css 等等
2、DOWContentLoaded是DOM 加载完毕,不包含图片 falsh css等就可以执行加载速度比load更快一些
2、window.onresize
window. onresize = function() { }
window.addEventListener ( "resize" , function() { });
window.onresize是调整窗口大小加载事件,当触发时就调用的处理函数。
注意∶
1.只要窗口大小发生像素变化,就会触发这个事件。
⒉.我们经常利用这个事件完成响应式布局。window.innerWidth当前屏幕的宽度
根据屏幕宽度隐藏和显示盒子
<style>div{height: 300px;width: 300px;background-color: red;}</style></head><body><script>//添加尺寸变化事件window.addEventListener('load',function(){//获取divvar div = document.querySelector('div');window.addEventListener('resize',function(){//获取屏幕尺寸console.log(window.innerWidth);console.log('变化了');if(window.innerWidth <= 800){//隐藏div.style.display = 'none';}else{//显示div.style.display = 'block';}})})</script><div></div></body>
3、confirm()方法
confirm():将弹出一个确认对话框
语法:
confirm("对话框中显示的纯文本")
示例:
<script type="text/javascript">var flag=confirm("确认要删除此条信息吗?");if(flag==true)alert("删除成功!");elsealert("你取消了删除");
</script>
confirm()与alert ()、 prompt()区别
1、alert( ):一个参数,仅显示警告对话框的消息,无返回值,不能对脚本产生任何改变
2、prompt( ):两个参数,输入对话框,用来提示用户输入一些信息,单击“取消”按钮则返回null,单击“确定”按钮则返回用户输入的值,常用于收集用户关于特定问题而反馈的信息
3、confirm( ):一个参数,确认对话框,显示提示对话框的消息、“确定”按钮和“取消”按钮,单击“确定”按钮返回true,单击“取消”按钮返回false,因此与if-else语句搭配使用
4、open()方法
语法:
window.open("弹出窗口的url","窗口名称","窗口特征”)
属性名称 | 说明 |
height、width |
窗口文档显示区的高度、宽度。以像素计 |
left、top |
窗口的x坐标、y坐标。以像素计 |
toolbar=yes | no |1 | 0 |
是否显示浏览器的工具栏。黙认是yes |
scrollbars=yes | no |1 | 0 |
是否显示滚动条。黙认是yes |
location=yes | no |1 | 0 |
是否显示地址地段。黙认是yes |
status=yes | no |1 | 0 |
是否添加状态栏。黙认是yes |
menubar=yes | no |1 | 0 |
是否显示菜单栏。黙认是yes |
resizable=yes | no |1 | 0 |
窗口是否可调节尺寸。黙认是yes |
titlebar=yes | no |1 | 0 |
是否显示标题栏。黙认是yes |
fullscreen=yes | no |1 | 0 |
是否使用全屏模式显示浏览器。黙认是no。处于全屏模式的窗口必须同时处于剧院模式 |
5、setTimeout()定时器
语法:
window.setTimeout(调用函数,[延迟的毫秒数]);
setTimeout()方法用于设置一个定时器,该定时器在定时器到期后执行调用函数。注意︰
1. window可以省略。
⒉.这个调用函数可以直接写函数,或者写函数名或者采取字符串‘函数名)'三种形式。第三种不推荐3.延迟的毫秒数省略默认是0,如果写,必须是毫秒。
4.因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。
示例:
写法1、
setTimeout(function() {
console.log( '时间到了');},2000);
写法2、
function callback() {
console.log(·爆炸了');
}
setTimeout(callback,3000);
写法3、
setTimeout( ' callback()', 3000);//不提倡这个写法
setTimeout()这个调用函数我们也称为回调函数callback
普通函数是按照代码顺序直接调用。
而这个函数,需要等待时间,时间到了才去调用这个函数,因此称为回调函数。
简单理解︰回调,就是回头调用的意思。上一件事干完,再回头再调用这个函数。
以前我们讲的element.onclick =function(){}或者element.addEventListener("click",fn);里面的函数也
是回调函数。
示例:
<body><img src="data:images/ ad.jpg" alt="" class="ad"><script>var ad = document.queryselector('.ad ');setTimeout(function() {ad.style.display = 'none';}, 5000);</script>
</ body>
停止定时器:setTimeout()
window.clearTimeout (timeoutID)
clearTimeout()方法取消了先前通过调用setTimeout()建立的定时器。
注意∶
1. window可以省略。
2.里面的参数就是定时器的标识符。
示例:
<body><button>点击停止定时器</button><script>var btn = document.querySelector('button');var timer = setTimeout(function(){console.log('爆炸了');},5000);btn.addEventListener('click', function() {clearTimeout(timer);})</script>
</body>
setlnterval()定时器
语法:
window .setInterval(回调函数,[间隔的毫秒数]);
setInterval(方法重复调用一个函数,每隔这个时间,就去调用一次回调函数。
注意︰
1.window可以省略。
⒉这个调用函数可以直接写函数,或者写函数名或者采取字符串'函数名(’三种形式。
3.间隔的毫秒数省略默认是0,如果写,必须是毫秒,表示每隔多少毫秒就自动调用这个函数。
4.因为定时器可能有很多,所以我们经常给定时器赋值一个标识符。
示例:
<body><script>// 1. setInterval//语法规范: window.setInterval(调用函数,延时时间);setInterval(function() {console.log('继续输出');},1000);// 2. setTimeout延时时间到了,就去调用这个回调函数,只调用一次就结束了这个定时器// 3. setInterval每隔这个延时时间,就去调用这个回调函数,会调用很多次,重复调用这个函数</script>
< / body>
停止setlnterval()定时器
语法:
window.clearInterval (intervalID);
clearInterval()方法取消了先前通过调用setInterval()建立的定时器。
注意∶
1.window可以省略。
2.里面的参数就是定时器的标识符。
示例:
<body> <button class="begin">开启定时器</button><button class="stop">停止定时器</button><script>var begin = document.querySelector( '.begin' );var stop = document.querySelector( '.stop ');vartimer= null;//全局变量null是一个空对象begin.addEventListener('click' , function() {setInterval(function() {console.log( '你好 ' );},1000);})stop.addEventListener( 'click' , function() {clearInterval(timer);})</script>
</body>
获取验证码计时器:
<body>手机号码:<input type="number"> <button>发送</button><script>//按钮点击之后,会禁用disabled 为true//同时按钮里面的内容会变化,注意button里面的内容通过 innerHTML修改//里面秒数是有变化的,因此需要用到定时器//定义一个变量,在定时器里面,不断递减//如果变量为0 说明到了时间,我们需要停止定时器,并且复原按钮初始状态var btn = document.queryselector('button');var time = 3;//定义剩下的秒数btn.addEventListener( 'click' , functioh() {btn.disabled = true;var timer = setInterval(function() {if (time == 0){//清除定时器和复原按钮clearInterval(timer);btn.disabled = false;btn.innerHTML ='发送';time = 3;//这个3需要从新开始}else {btn.innerHTML ='还剩下'+ time + '秒';time--;}},1000);})<script>
</body>
6、this的使用
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,一般情况下this的最终指向的是那个调用它的对象
1、如果单独使用,this 表示全局对象。
2、在方法中,this 表示该方法所属的对象。
3、在函数中,this 表示全局对象。
4、在函数中,在严格模式下,this 是未定义的(undefined)。
5、在事件中,this 表示接收事件的元素
7、JS是单线程
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为
Javascript这门脚本语言诞生的使命所致——JavaScript 是为处理页面中用户的交互,以及操作
DOM而诞生的。比如我们对某个DOM元素进行添加和删除操作,不能同时进行。应该先进行添
加,之后再删除。
单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。这样所导致的问题
是∶如果JS执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。
同步和异步
为了解决这个问题,利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚
本创建多个线程。于是,JS中出现了同步和异步。
同步:
前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如
做饭的同步做法:我们要烧水煮饭,等水开了( 10分钟之后),再去切菜,炒菜。
异步:
你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事
情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。
同步任务:同步任务都在主线程上执行,形成一个执行栈。
异步任务:JS的异步是通过回调函数实现的。一般而言,异步任务有以下三种类型:
1、普通事件,如click、resize等
2、资源加载,如load、error等
3、定时器,包括setIlnterval、setTimeout等
异步任务相关回调函数添加到任务队列中(任务队列也称为消息队列)。
8、JS执行机制
1.先执行执行栈中的同步任务
⒉异步任务(回调函数)放入任务队列中。
3.一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读
取的异步任务结束等待状态,进入执行栈,开始执行。
js执行机制
由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环
event loop ) .
location 对象
window对象给我们提供了一个location属性用于获取或设置窗体的URL,并且可以用于解析URL。因为这个属性返回的是一个对象,所以我们将这个属性也称为location对象。
9、URL
统一资源定位符(Uniform Resource Locator, 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.itheima.com |
port | 端口号可选,省略时使用方案的默认端口如http的默认端口为80 |
path | 路径由零或多个/符号隔开的字符串,一般用来表示主机上的一个目录或文件地址 |
query | 路径由零或多个/符号隔开的字符串,一般用来表示主机上的一个目录或文件地址 |
fragment | 片段#后面内容常见于链接锚点 |
10、location对象的属性
location对象属性 | 返回值 |
location.href | 获取或者设置整个URL |
location.host | 返回主机(域名)www.itheima.com |
location.port | 返回端口号,如果未写返回空字符串 |
location.pathname | 返回路径 |
location.search | 返回参数 |
location.hash | 返回片段#后面内容常见于链接锚点 |
location对象的方法
location对象方法 | 返回值 |
location.assign() | 跟href一样,可以跳转页面(也称为重定向页面) |
location.replace() | 替换当前页面,因为不记录历史,所以不能后退页面 |
location.reload() | 重新加载页面,相当于刷新按钮或者f5如果参数为true强制刷新ctrl+f5 |
11、document对象
属性 | 说明 |
referrer |
返回载入当前文档的URL |
URL |
返回当前文档的URL |
语法:
document.referrer
document.URL
document对象的常用方法:
名称 | 说明 |
getElementById() |
返回对拥有指定id的第一个对象的引用 |
getElementsByName() |
返回带有指定名称的对象的集合 |
getElementsByTagName() |
返回带有指定标签名的对象的集合 |
write() Innerhtml textContent |
向文档写文本、HTML表达式或JavaScript代码 |
JavaScript内置对象
名称 | 说明 |
Array |
用于在单独的变量名中存储一系列的值
|
String |
用于支持对字符串的处理
|
Math | 用于执行常用的数学任务,它包含了若干个数字常量和函数 |
Date | 用于操作日期和时间 |
12、Date对象
语法:
var 日期对象=new Date(参数)
参数格式:MM DD,YYYY,hh:mm:ss
示例:
var today=new Date(); //返回当前日期和时间
var tdate=new Date("september 1,2013,14:58:12");
方法 | 说明 |
getDate() |
返回 Date 对象的一个月中的每一天,其值介于1~31之间 |
getDay() |
返回 Date 对象的星期中的每一天,其值介于0~6之间 |
getHours() |
返回 Date 对象的小时数,其值介于0~23之间 |
getMinutes() |
返回 Date 对象的分钟数,其值介于0~59之间 |
getSeconds() |
返回 Date 对象的秒数,其值介于0~59之间 |
getMonth() |
返回 Date 对象的月份,其值介于0~11之间 |
getFullYear() |
返回 Date 对象的年份,其值为4位数 |
getTime() |
返回自某一时刻(1970年1月1日)以来的毫秒数 |
13、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 = "" ; //电脑}
14、history对象
window对象给我们提供了一个history对象,与浏览器历史记录进行交互。该对象包含用户(在浏览器窗口中)访问过的URL。
history对象方法 | 作用 |
back() | 可以后退功能 |
forward() | 前进功能 |
go(参数) | 前进后退功能参数如果是1前进1个页面如果是-1后退1个页面 |
JavaScript:BOM相关推荐
- javascript BOM对象详解
javascript BOM对象详解 目标:本章节将分为9点详细介绍有关BOM对象的知识点 1.什么是BOM 2.BOM的构成 3.顶级对象window 4.window对象常见事件(页面加载事件和体 ...
- JavaScript (八) -- JavaScript BOM
目录 1. JavaScript BOM的概述: 2. Window 对象(浏览器窗口对象) 2.1 Window 对象的调用方式:
- JavaScript Bom和Dom
JavaScript Bom和Dom这一篇就够啦 JavaScript Bom和Dom 1.Web API 基本认知 2.DOM -- 基础 2.1 DOM简介 2.2 获取元素 2.3 事件基础 2 ...
- JavaScript——BOM知识
BOM概述 BOM(浏览器对象模型,Browser Object Model),即可以将浏览器的各个部分抽象成对象在JavaScript中进行调用和完成特定的功能.比如对历史记录,地址栏,整个窗口等都 ...
- Javascript(十三)javascript BOM详解
一.BOM定义 ECMAScript无疑是JavaScript的核心,但是要想在浏览器中使用JavaScript,那么BOM(浏览器对象模型) 才是真正的核心. BOM 提供了很多对象,用于访问浏览器 ...
- Java JavaScript BOM和正则表达式
一.作业 二.BOM 浏览器对象模型 (BOM-Browser Object Model) 使 JavaScript 有能力与浏览器"对话". 由于现代浏览器已经(几乎)实现了 J ...
- JavaScript BOM浏览器对象模型
什么是BOM浏览器对象模型? 浏览器对象模型(Browser Object Model(BOM))允许JavaScript与浏览器对话 BOM:浏览器对象模型 //宿主对象 BOM 提供了很多对象,用 ...
- javascript BOM与DOM介绍
Javascript中bom介绍 IE 3.0 和Netscape Navigator 3.0提供了一种特性- BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作.使用BOM,开发者可以移动窗口 ...
- JavaScript BOM对象和DOM对象(DHTML)
一.BOM对象 BOM(浏览器对象模型),可以对浏览器窗口进行访问和操作;使用BOM,开发者可以移动窗口/改变状态栏中的文本/执行其他与页面内容不直接相关的动作 功能:使JS有能力与浏览器" ...
最新文章
- R语言distMeeus函数计算大圆距离实战(Great Circle Distance)
- 神经元“超级替补”让失明小鼠恢复视力
- mysql+drdb+HA
- 成功的自动化测试实施的5大支柱(译)
- Easy Number Challenge
- Linux crontab命令
- .Net Core 商城微服务项目系列(一):使用IdentityServer4构建基础登录验证
- python 去除panda安装包_沉淀,再出发:python中的pandas包
- DecimalFormat的使用
- 90后程序猿失业倒计时,还剩4年时间!!!
- 转:Qt 嵌入式开发环境搭建
- Pannellum:实例之为全景图添加标题和作者
- python爬小说收费章节_python 多线程爬小说返回章节乱套。求解
- python查询当前路径_python获取当前目录路径和上级路径的实例
- NLP实践——Few-shot事件抽取《Building an Event Extractor with Only a Few Examples》
- 几种简单电路知识汇总
- js等待加载转圈圈效果
- iOS开发之应用首次启动显示用户引导 - 疯狂的萝卜 - 博客园
- Wannafly挑战赛29-御坂美琴(递归模拟)
- 树莓派——安装OpenCV
热门文章
- Apple商业网站封锁Firefox浏览器
- 服务器运维基础知识,IDC机房服务器运维基础知识
- c语言罗马数字转十进制,将罗马数字转换为十进制
- 时空猎人服务器维护中是什么意思,时空猎人玩家自助FAQ问题汇总新手必备
- 2015年中国最具影响力的50位商界领袖排行榜 马云居首 马化腾第二 雷军上榜
- Java【常见问题】List如何实现排序?
- css与js放置的位置
- _091_Java_在catch抛出异常的同时finally块中也抛出异常的情况
- FLUENT精典案例#320-管壳式换热器仿真
- 数据竞赛技巧|数据挖掘(四):常用trick介绍