目录
一、BOM
1.BOM( Browser Object Model)---> 浏览器对象模型
2.BOM 作用:主要提供了访问和操作浏览器各组件的方式
(1)window浏览器窗口对象是js中最大的对象。其他所有的对象,都是window的子对象
(2)document文档对象,代表一个网页
(3)location地址栏对象,对地址栏的操作一些方法
(4)navigator浏览器软件对象,主要用来判断用户用的是什么浏览器,可以解决兼容性问题
(5)screen屏幕对象,可以获取屏幕相关的信息
(6)history历史记录对象,可以对浏览器的历史记录进行相关的操作
注意:
1、window是全局浏览器内置顶级对象 表示浏览器中打开的窗口(没有应用于window对象的公开标准,不过所有浏览器都支持该对象)Window 对象表示一个浏览器窗口或一个框架。
2、在客户端 JavaScript 中,Window 对象是全局对象,所有的表达式都在当前的环境中计算。也就是说,要引用当前窗口根本不需要特殊的语法,可以把那个窗口的属性作为全局变量来使用。
例如,可以只写 document,而不必写 window.document。
同样,可以把当前窗口对象的方法当作函数来使用,如只写 alert(),而不必写 window.alert()。
除了上面列出的属性和方法,Window 对象还实现了核心 JavaScript 所定义的所有全局属性和方法。
二、window对象
1.prompt() 显示可提示用户输入的对话框
2.alert() 显示一个带有提示信息和一个“确定”按钮的警示对话框
3.confirm() 显示一个带有提示信息、“确定”和“取消”按钮的对话框,介于alert和prompt中间的
var btn = document.getElementById('btn')
btn.onclick = function(){
var a = confirm('你确认提交吗?') //点击了确定a的值就是true,点击了取消a的值就是false
if(a){
alert('确认')
}else{
document.write('这个页面不改变')
}
}
4.close() 关闭浏览器窗口 close()方法用于关闭浏览器窗口
语法:window.close();
5.open() 打开一个窗口
var btn = document.getElementById('btn')
btn.onclick = function(){
// 参数1表示打开窗口的地址
// 参数2表示是否在新窗口打开
// 参数3表示窗口样式,存在兼容问题,有些浏览器起作用,有些不起作用
// window.open('https://www.jd.com', '_self') 当前窗口
window.open('https://www.jd.com', '_target') 新窗口
window.open('https://www.jd.com', '_target', 'width=50; height=200')
}
6.setInterval 定时器,每隔一段时间程序会自动执行
setInterval(callback, 毫秒)
clearInterval('定时器的序号')
注意:
每一个定时器都会返回一个唯一的序号(定时器的id号,用于关闭定时器)
定时器的序号默认都是从1开始的,但是由于浏览器内置的插件或者咱们主动安装的一些插件的影响,导致开启定时器的序号有可能不是从1开始的
定时器累加问题
当连续点击开起定时器按钮时,相当于一次性开启了很多个定时器,当你点击关闭按钮时关闭的是当前的定时器,之前的定时器是没有被关闭的,因此形成定时器累加问题
解决方案
先清除,再开启
var aBtn = document.getElementsByTagName('button')
var timer = null
var i =0
aBtn[0].onclick = function(){
//先清除,再开启
clearInterval(timer)
timer = setInterval(function(){
i += 1
console.log('定时器序号', timer)
},1000)
//清除定时器
aBtn[1].onclick = function(){
clearInterval(timer)
}
function fn(a){
console.log(123)
console.log(a)
}
//fn()有两层含义:表示函数调用 表示接收函数的返回值
//给函数名称加括号设置了一个引号,表示不是函数自己调用自己
//而是通过定时器去调用它(这个时候定时器内部会默认去执行eval函数)
setInterval("fn('王成')", 1000)
7. setTimeout延时器,只会执行一次,类似于生活的定时炸弹
setTimeout(callback, 毫秒)
clearTimeout('延时器的序号')
注意
每一个延时器都会返回一个唯一的序号(延时器的id号,用于关闭延时器)
延时器的序号默认都是从1开始的,但是由于浏览器内置的插件或者咱们主动安装的一些插件的影响,导致开启延时器的序号有可能不是从1开始的
var timer = null
timer = setTimeout(function(){
console.log('王成炸了')
},3000)
clearTimeout(timer)
三、location地址栏对象
1、hostname 设置或返回当前URL的主机名
2、href:获取地址栏中完整的地址。可以实现JS的网页跳转。location.href = “http://www.sina.com.cn”;
3、pathname:文件路径及文件名
4、protocol:协议,如:http://、ftp://
5、hash:锚点名称。如:#top 哈希
6、reload([true]):刷新网页。true参数表示强制刷新 location.search 获取查询字符串
7.search 拿到查询字符串,如username=zhanhgsan&password=123
var btn = document.getElementById('btn')
btn.onclick = function(){
// reload(true) 如果传递一个true作为参数那么表示强制刷新(不走缓存)
location.reload(true)
}
8. meta表示源信息:专门用来配置网页头部信息的
表示刷新页面,和几秒后跳转到某个网页
<meta http-equiv = 'refresh' content = '5;url=http://www.sina.com.cn' />
<meta name="keywords" content="" /> 向搜索引擎说明你的网页的关键词
<meta name="description" content=""/> 告诉搜索引擎你的站点的主要内容
四、history对象
1、back() 后退
2、forward() 前进
3、go()
4、history.back()=== history.go(-1) 浏览器中的 后退
5、history.forward() === history.go ( 1 ) 浏览器中的 前进
五、screen屏幕对象
1、width:返回屏幕的宽度,只读属性。 window.screen.width
2、height:返回屏幕的高度,只读属性。 window.screen.height
3、availWidth:屏幕的有效宽度,不含任务栏。只读属性。
4、availHeight:屏幕的有效高度,不含任务栏。只读属性。
六、navigator对象
navigator对象:指的是浏览器软件信息
1、appName:浏览器软件名称 appCodeName 浏览器软件名称现在没有多大参考意义了
2、appVersion:浏览器软件的核心版本号。
3、platform:平台
4、userAgent浏览器版本信息(记住)
七、windows对象事件
1.onscroll 滚动事件,当网页的滚动条滚动的时候触发这个事件
onscroll = function(){
// 滚动距离
// 正常的获取,但是在没有声明文档类型的时候是获取不到的
//document.documentElement.scrollTop
//只有在没有声明文档类型的时候才能获得到
//document.body.scrollTop
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
console.log(scrollTop)
}
2.onresize 窗口事件,当浏览器的窗口大小发生改变的时候触发这个事件
onresize = function(){
//window.innerWidth
//window.innerHeight
if(window.innerWidth <= 1024){
document.documentElement.style.fontSize = '80px'
}else if(window.innerWidth <= 750){
document.documentElement.style.fontSize = '50px'
}
3.onload 当网页加载完成,指<body>标记的所有内容全部加载完成,才触发该事件(条件)
八、DOM
1.DOM对象介绍
(1)DOM Document Object Model ,文档对象模型。我们可以把网页中的所有“东西”看成是“对象”。
(2)DOM是W3C制定的网页标准或规则,而这个标准,在浏览器中,以“对象”的形式得以实现。
(3)DOM的官方定义:DOM可以使脚本,动态的访问或操作,网页的内容、网页外观、网页结构。
2.DOM的分类
(1)核心DOM:提供了同时操作HTML文档和XML文档的公共的属性和方法。
(2)HTML DOM:针对HTML文档提供的专用的属性方法。
(3)XML DOM:针对XML文档提供的专用的属性和方法。(了解)
(4)CSS DOM:提供了操作CSS的属性和方法。
(5)Event DOM:事件对象模型。如:onclick、 onload等。(讲事件时再说)
3.DOM中节点的类型
document文档节点,代表整个网页,不代表任何HTML标记。但它是html节点的父节点
element元素节点,指任何HTML标记。每一个HTML标记就称一个“元素节点”。它可以有文本节点和属性节点
attribute属性节点。指HTML标记的属性
text节点。是节点树的最底节点
comment注释节点
<!-- document 表示的是文档、网页 -->
<!DOCTYPE html>
<!-- element元素节点 -->
<html lang="en">
<head>
<!-- attribute属性节点 lang、charset、name、content -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- comment注释节点 -->
<!-- text文本节点(最底层的)在网页中的文字、空格、换行 -->
</body>
</html>
4.DOM中的访问节点
firstChild:第1个子节点
lastChild:最后1个子节点
childNodes:子节点列表,是一个伪数组 childNodes[0]
parentNode:父节点
nodeName:节点名称 返回标签名
nodeValue 属性节点的的属性值
nodeType 节点类型,返回值是数字
如果节点是元素节点,则 nodeType 属性将返回 1。如果节点是属性节点,则 nodeType 属性将返回 2。返回3是文本节点。如果是注释节点,返回8。如果是文本节点,返回3
5.访问元素节点
firstElementChild:访问第一个元素节点
lastElementChild:访问最后一个元素节点
children:访问所有的子元素节点,结果是一个伪数组
previousElementSibling:获取上一个兄弟元素节点
nextElementSibling:获取下一个兄弟元素节点
parentElement,parentNode:通过子元素获取父元素
注意:parentElement 结果是一样的,语义化上的区别。专门获取元素节点的父节点
parentNode 结果是一样的,语义化上的区别。可以获取到所有节点的父节点(目前只有元素节点才有父节点)
6.操作属性节点
知识点补充:
图片名称里面如果是编码格式的,前面有一个data,那么说明这个图片就是base64格式的
base64把图片直接以编码的形式进行展示,不用管图片路径什么的了
setAttribute():设置属性节点
注意:注意点:设置属性的时候,必须是这个标记自身支持的html属性
getAttribute():获取属性,获取到的是属性值
getAttributeNode():获取到的是整个属性节点
getAttributeNode().nodeValue:通过属性节点,再获取属性值
同理:getAttributeNode().nodeType:通过属性节点,再获取节点类型
getAttributeNode().nodeName:通过属性节点,再获取节点名称
removeAttribute():删除节点