1. 事件源
2. 事件类型
3. 事件处理函数
事件源.on + 事件类型 = 事件处理函数弊端: 无法绑定多个同类型的事件, 后边新写的事件, 会覆盖掉原有的事件
var oDiv = document.querySelector('div');oDiv.onclick = function () {console.log('绑定给div的第一个事件');}oDiv.onclick = function () {console.log('绑定给div的第二个事件');}

var oDiv = document.querySelector('div');oDiv.addEventListener('click', function () {console.log('绑定给div的第一个事件');})oDiv.addEventListener('click', function () {console.log('绑定给div的第二个事件');})

onload: 当页面所有资源加载完毕时执行 Document 我的是div标签
var oDiv = document.querySelector('div');oDiv.onclick = function () {console.log('单击元素时触发');}

300ms内连续点击两次鼠标 var oDiv = document.querySelector('div');oDiv.ondblclick = function () {console.log('双击元素时触发');}

var oDiv = document.querySelector('div');oDiv.oncontextmenu = function () {console.log('鼠标右键单击时触发');}

鼠标左键按下的时候会触发的(哪怕鼠标没有抬起) var oDiv = document.querySelector('div');oDiv.onmousedown = function () {console.log('鼠标按下时触发');}

鼠标左键抬起的时候会触发的 var oDiv = document.querySelector('div');oDiv.onmouseup = function () {console.log('鼠标抬起时触发');}

鼠标在元素内部移动时触发 var oDiv = document.querySelector('div');oDiv.onmousemove = function () {console.log('鼠标移动时触发');}

mouseover和mouseout两个方法,移入元素和移出元素子盒子时都会触发mouseenter和mouseleave两个方法,只有在移入元素时触发
var oDiv = document.querySelector('div');// 鼠标移入事件1 鼠标的移动到元素内部时触发oDiv.onmouseover = function () {console.log('onmouseover:鼠标移入时触发');}// 鼠标移出事件1 鼠标移动出元素内部时触发oDiv.onmouseout = function () {console.log('onmouseout:鼠标移出时触发');}// 鼠标移入事件2oDiv.onmouseenter = function () {console.log('onmouseenter:鼠标移入事件2');}// 鼠标移出事件2oDiv.onmouseleave = function () {console.log('onmouseleave:鼠标移出事件2');}

document.on键盘事件的事件类型 = function () {} document.onkeyup = function () {console.log('键盘按键抬起');}
document.onkeydown = function () {console.log('键盘某个按键被按下');}
document.onkeypress = function () {console.log('键盘按下抬起时触发');}
文本框:
var inp = document.querySelector('#inp')inp.onfocus = function () {console.log('当前文本框获得焦点');}

var inp = document.querySelector('#inp')inp.onblur = function () {console.log('当前文本框失去焦点');}

var inp = document.querySelector('#inp')inp.onchange = function () {console.log('当前文本框内容被更改');}

var inp = document.querySelector('#inp')inp.oninput = function () {console.log('当前文本框正在输入内容');}

- 当事件触发时, 携带一些信息
- 当前时间的事件源是谁?
- 鼠标点击的位置在哪里(点击事件)
- 键盘按下了那个按键(键盘事件)
var oBtn = document.querySelector('button');oBtn.onclick = function (event) {console.log(event);}

相对于
1. 事件源
2. 页面
3. 浏览器窗口
var oDiv = document.querySelector('div');oDiv.onclick = function (e) {// 1. 获取相对于事件源的鼠标坐标点console.log('相对于事件源 X 轴', e.offsetX);console.log('相对于事件源 Y 轴', e.offsetY);// 2. 获取相对于页面的坐标点console.log('---------------------------------');console.log('相对于页面的 X 轴', e.pageX);console.log('相对于页面的 Y 轴', e.pageY);// 3. 获取相对于浏览器窗口的坐标点console.log('---------------------------------');console.log('相对于浏览器窗口的 X 轴', e.clientX);console.log('相对于浏览器窗口的 Y 轴', e.clientY);}

e.key===> 返回按下的按键e.keyCode===> 返回按下的按键的进制码- keyCode
已经被移除, 但是很多主流浏览器还支持使用
var oIpt = document.querySelector('input');oIpt.onkeyup = function (e) {console.log(e.key, e.keyCode);}

判断:Ctrl+A
var oIpt = document.querySelector('input');oIpt.onkeyup = function (e) {if (e.ctrlKey && e.key === 'a') {console.log('按下了Ctrl+A键');}}
