BOM操作 : 浏览器对象模型,都是操作浏览器的
1,三大弹出层
window.alert() 提示框
window.prompt() 输入框
window.confirm() 确认框
2,地址栏信息
window.location 地址栏信息
window.location.reload 重新加载页面
window.location.href 浏览器地址/设定跳转地址
decodeURIComponent() 地址栏中文正常显示
window.location.host 主机名称
window.location.prot 主机端口
window.location.search 地址栏参数
3,浏览器的跳转
window.history 浏览器跳转
window.history.length 浏览器跳转次数
window.history.back 浏览器跳转上一个页面
window.history.forward 浏览器跳转下一个页面
window.history.go() 浏览器跳转次数设定
4,浏览器信息对象
window.navigator 浏览器信息对象
window.navigator.userAgent 浏览器版本,名称等信息
window.navigator.appName 浏览器名称---网景
window.navigator.appVersion 浏览器版本
window.navigator.platform 浏览器所在操作系统
5,运动条
document.documentElement.scrollTop || document.body.scrollTop
document.documentElement.scrollLeft || document.body.scrollLeft
6,常见事件
window.onload 浏览器加载事件
window.onscroll 浏览器滚动条监听事件
window.onresize 浏览器大小改变
window.open() 新窗口打开
window.close() 关闭当前窗口
DOM操作 : 文档对象模型,操作HTML文件的
1,获取标签对象,通过获取的标签对象,来操作标签
document.getElementById() 通过id属性值,获取一个标签对象
document.getElementsByClassN() 通过class属性值,获取标签对象,伪数组
document.getElementsByTagName() 通过标签名称,获取标签对象伪数组
document.getElementsByName() 通过标签name属性值,获取标签对象伪数组,可以forEach
document.querySelector() 通过设定内容,获取一个标签对象
document.querySelectorAll() 通过设定内容,获取标签对象,为数组,可以forEach
2,操作,设定标签对象
属性操作
标签对象本身就具有的, console.dir(标签对象),可以看到的
通过 点语法 或者 []语法,直接操作
id,className,checked...
通过JavaScript方法操作
标签对象.setAttribute('属性' , 属性值) 设定
标签对象.getAttribute('属性') 获取
标签对象.removeAttribute('属性' , 属性值) 删除
样式操作
设定 : 标签对象.style.属性 = 属性值
标签对象.style[属性] = 属性值
获取 : window.getComputedStyle(标签对象).属性 一般浏览器
标签对象.currentStyle.属性 低版本IE浏览器
标签参数
标签对象.value
标签占位
标签对象.offsetHeight 标签对象.offsetWidth
宽高+padding+border
标签对象.clientHeight 标签对象.clientWidth
宽高+padding
标签对象.clientLeft 标签对象.clientTop
左 / 上 边框线宽度
标签对象.offsetLeft 标签对象.offsetTop
与父级定位对象 标签对象.offsetParent 之间的间距
3,事件
事件类型
鼠标事件
click 左键单击
dblclick 左键双击
contextmenu 右键单击
mousedown 鼠标按下
mouseup 鼠标抬起
mouseover 鼠标经过,子级也会触发
mouseenter 鼠标经过.子级不会触发
mouseout 鼠标移出,子级也会触发
mouseleave 鼠标移出.子级不会触发
mousemove 鼠标移动
键盘按键事件
keydown 按键按下
keyup 按键抬起
e.keyCode 按键数值
e.altKey alt按键是否按下
e.ctrlKey ctrl按键是否按下
e.shiftKey shift按键是否按下
表单事件
focus 获取焦点
input 输入事件
change 失去焦点,并且数值改变
submit 提交表单
触摸事件
touchstart 触摸开始
touchend 触摸结束
touchmove 触摸移动
特殊事件
transitionend 过渡结束
animationend 动画结束
浏览器视窗窗口的宽度高度
包含滚动条
window.innerHeight
window.innerWidth
不包含滚动条
document.documentElement.clientHeight || document.documentElement.clientWidth
document.body.clientHeight || document.body.clientWidth
事件对象 e event
定义在事件对象处理函数的参数,浏览器会自动向其中存储数据
只需要定义形参,浏览器会自动存储赋值实参
e = e || window.event
事件对象的坐标
e.offsetX e.offsetY 事件对象,内容左上角的坐标
e.clientX e.clientY 事件对象,视窗窗口左上角的坐标
e.pageX e.pageY 事件对象,页面左上角的坐标
事件对象的内容
e.target 存储其中的属性 id className...
事件的传播:
点击子级标签,也会触发父级标签对象,相同类型的事件
冒泡机制: 从子级到父级
捕获机制: 从父级到子级
阻止事件传播
e.stopPropagation() 普通浏览器
e.cancelBubble = true 低版本IE
事件的委托
给父级标题,添加事件,通过判断触发事件的对象,来执行不同的操作
一般用于动态生成的标签
事件的监听
添加监听事件
标签对象.addEventListener('事件类型' , 事件处理函数) 一般浏览器
标签对象.attachEvent('on事件类型' , 事件处理函数) 低版本IE浏览器
移出监听事件
标签对象.removeEventListener('事件类型' , 事件处理函数)
注意:
如果没有参数,可以直接添加事件处理函数
如果有参数,要用 function(){} 来包裹事件处理函数
如果需要删除,必须绑定的是标签名称或者变量名称
特别提示: 浏览器的兼容性,一定要知道,面试基本都会问到
目前可以回答的内容是:
HTML的兼容性: 对于HTML标签的兼容和对音频视频播放的兼容
css 的兼容性: 弹性盒子 过渡 动画 2d,3d....
JavaScript的兼容性: 我给你们总结的