JavaScript BOM 操作
BOM(browser object model ) 浏览器对象模型
👉 浏览器 对象 模型
window 对象方法
window 是浏览器的一个实例,在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个 接口,又是ECMAScrip 规定的 Global对象 === 全局对象
♥ 所有的全局变量和全局方法都被归在 window 上了。
window.alert(警示框)
功能:弹出警示框
1 | alert('弹出来') |
window.confirm (‘消息对话框’);
功能:显示一个带有指定消息和 OK 及取消按钮的消息对话框
返回值: 布尔型 ,确定是 true, 取消是 false
1 | // 获取按钮 |
window.prompt( text1,text2 )
参数说明:
text1:要做对话框中显示的纯文本(而不是html格式的文本)
text2: 默认的输入文本
返回值:如果用户单击提示框的取消按钮,则返回 null
如果用户单击提示框的确定按钮,则返回 输入字段当前显示的文本
1 | // 弹出输入框 |
window.Open( 1,2 ,3)
功能:打开一个新的浏览器窗口或者查找一个已命名的窗口
参数说明:
pageURL: 子窗口路径
name: 子窗口句柄 (name 声明了新窗口的名称,方便后期通过对子窗口进行引用)
paramenters: 窗口参数(各参数用逗号分隔)
width/height left/top toolbar(是否显示浏览器的工具栏)
menubar 是否显示菜单栏
scrillbars 是否显示滚动条
location 是否显示 地址字段
status 是否添加状态栏
1 | window.open("wwww.baidu.com","baidu ","......"); |
window.close(关闭当前窗口)
1 | window.close(); |
setTimeout 定时器
超时调用
语法:setTimeout( code,millisec)
功能:在指定的毫秒数后调用函数或计算表达式
参数说明:
code:调用的函数或要执行的JavaScript代码串
millsec: 在执行代码前需等待的毫秒数
setTimeout() 只执行code一次,如果要多次调用,可以让code自身再次调用 setTimeout,通过这种方法可以实现 间隙调用相同的功能
返回值: 返回一个ID值,通过它取消超时调用
1 | // 匿名函数调用 |
清除超时调用
语法:clearTimeout( id_of_settimeout )
功能:取消由setTimeout() 方法设置的timeout
参数说明:
id_of_settimeout : 由setTimeout() 返回的ID值,该值标识要取消的延迟执行代码块
1 | // 自定义函数 |
案例
1 | <input type="button" value="删除"> |
1 | div{width:400px;height:120px;margin-top:50px;border:2px solid gray;padding:10px;} |
1 | // 获取 俩个按钮 |
间歇调用
语法:setInterval( code,millisec );
功能:每隔指定的事件执行一次代码
参数说明:
code : 要调用的函数或要执行的代码串
millisec: 周期性执行或调用code之间的时间间隔,以毫秒计数
1 | // 间隙调用 |
清除间隙调用
语法: clearInterval( id_of_setinterval )
功能:取消由setInterval () 方法设置的interval
参数说明:
id_of_setinterval : 由setInterval () 返回的ID 值
1 | // 间隙调用 |
综合案例
1 | // 使用超时调用实现,间隙调用功能 |
编程练习
“☆☆☆今日特卖☆☆☆ ”和“★★★今日特卖★★★”这两个文本每0.5秒互相切换一次
任务
第一步:先获取放置文本的div文本框对象,用变量进行接收
第二步:自定义一个变量,用来接收记录闪烁的值,初始值是0
第三步:设置定时器,每500毫秒执行一下定时器里面的脚本
第四步:定时器的脚本如下:
(1) 当闪烁变量的值是0时,闪烁变量的值设置为1,div里面的内容设置为:’☆☆☆今日特卖☆☆☆’
(2)当闪烁变量的值是1时,闪烁变量的值设置为0,div里面的内容设置为:’★★★今日特卖★★★’
1 | <h3>会闪烁的文字</h3> |
1 | div{ |
1 | var tex = document.getElementById('text'); |
location 窗口对象属性
location 对象提供了与当前窗口中加载的文档有关的信息,还提供了导航的功能,它既是window对象的属性,也是docment对象的属性。
location .href
语法:location href
功能:返回当前加载页面的完整URL
说明: location .href 与window.location.href 等价
1 | console.log(window.location.href); |
location .hash
语法:location .hash
功能:返回URL中的hash(#号后 跟 零或多个字符),如果不包含则返回空字符串。
注:能实现锚链接 效果
1 | console.log(window.location .hash); |
location .host
语法:location .host
功能:返回服务器名称和端口号(前提是有这个东东)
location .hostname
语法:location .hostname
功能:返回不带端口号的服务器名称
location .pathname
语法:location .pathname
功能:返回URL中的目录和文件名
location .port
语法:location .port
功能:返回URL中指定的端口号,如果没有,返回空字符串
location .portocol
语法:location .portocol
功能:返回页面使用的协议
location .search
语法:location .search
功能:返回URL的查询字符串,这个字符串以问号开头
location 浏览器对象属性
location . relace()
功能:重新定向URL
说明:使用location.relace 不会在历史记录中生成新记录
location . reload()
功能:重新加载当前显示页面
说明:
location . reload() 有可能从缓存中加载
location . reload( true) 从服务器重新加载
注:一般放在页面最后面。
1 | docment.getElementById('btn').onclick = function(){ |
history 对象保存了用户在浏览器中访问页面的历史记录
history .back()
功能:回到历史记录的上一步
说明:相当于使用了history .go(-1)
1 | // 点击btn 按钮时,回到历史记录的上一步 |
history .forward()
功能:回到历史记录的下一步
说明:相当于使用了 history .go( 1 )
1 | // 点击btn 按钮时,回到历史记录的下一步 |
Screen 显示器对象及方法
Screen对象包含有关客户端显示屏幕的信息
Screen . availWidth()
功能:返回可用的屏幕宽度
说明:获取到的是除了任务栏之外的内容。
1 | console.log("获取显示器屏幕的宽度" + screen.availWidth); |
Screen . availHeight()
功能:返回可用的屏幕高度
说明:获取到的是除了任务栏之外的内容。
1 | console.log("获取显示器屏幕的高度" + screen.availHeight); |
navigator 浏览器版本信息
navigator.userAgent
用来识别浏览器名称/版本/引擎以及操作系统等信息的内容
1 | var explorer = navigator.userAgent; |
封装检测浏览器类型函数
1 | // 检测浏览器类型 |
JavaScript BOM 节点操作
创建节点
docment.write()
1 | document.write('<h1>111111</h1>') |
create系列创建节点的方法
docment.createElement() 标签节点
docment.createTextNode() 文本内容节点
1 | // 获取 ID |
docment.createDocumentFragment() 文档片段
docment.createComment() 注释节点
create系列案例
1 | // 创建注释 |
高效率创建节点方法
innerHTML
用来设置或获取当前标签的起始和结束里面的内容
限制问题:
字符串的最左边不能出现空白,IE6~8会自动移除掉它
大多数浏览器不会对script 标签进行脚本执行操作
不能单独创建meta,style.link 等元素,一定要在前面加上一些字符
innerHTML不会执行script中脚本的语句。
1 | // <div id="box"></div> |
outerHTML
返回调用它的元素及所有的子节点的HTML标签
会覆盖原先父元素下的所有元素
outerHTML获取到的是整个标签,而不仅限于标签内部的内容。
1 | 元素名.outerHTML // 获取 |
innerText
设置或获取位于对象起始和结束标签内的文本
outerText
遍历节点
————-第1套API 节点查找————-
获取第一个子节点
firstChild
获取最后一个子节点
lastChild
获取父节点
parentNode
ownerDocument
获取下一个兄弟节点获取
nextSibling
获取上一个兄弟节点获取
previousSibling
获取任意一个子节点
childNodes[1]
childNodes.itme(1)
检查当前节点是否存在子节点
hasChildNodes( )
注释:元素与元素之间的空格,会被视为一个文本节点。
1 | // 页面打印文档结构 |
————-第2套API 节点查找 IE8以下不支持————-
firstElementChild 第一个字节点
lastElementChild 最后一个字节点
nextElementSibling 下一个兄弟节点
previusElementSibling 上一个兄弟节点
Children[1] 获取任意子节点
childElementCount 返回当前节点的所有子节点
1 | var box = document.getElementById('box'); |
类数组对象 NodeList
NodeList 是一种类数组对象,用于保存一组有序的节点
可以通过方括号语法来访问NodeList的值,有item 方法与length 属性
它并不是Array 的实例,没有数组对象的方法