事件对象
事件:对某个事件的某种操作;
事件对象:当某个事件触发时产生的对象,就是事件对象。
event:使用前提必须有事件
事件对象的兼容:var e=evt||event;
eg:让图片跳一跳
<style>
div{backgroun:url(../img.01png)}
</style>
<div></div>
<script>
var div=document.querySelector("div");
document.onclick=function(evt){
e=evt||event;
div.style.top=div.offsetTOP-200+"px"
//设置图片的位置,每点击一次向上走200px
setTimeout(function(){
div.style.top=600+"px"},3000)
}
//设置一个定时器让没次点击三秒后,回到垂直方向600px
</script>
鼠标事件对象的属性
坐标属性:pageX/pageY:相对于整个文档的顶部和左侧的坐标
常用;
clientX/clientY相对于局部窗口的左侧和顶部的坐标;
offsetX/offsetY相对于内部元素的距离左侧和顶部的坐标
常用于拖拽;
eg:让图片随鼠标移动
<style>
div{backgroun:url(../img.png);position:absolute;
left:200px;top:500px}
</style>
<div></div>
<script>
document.onmousemove=function(evt){
e=evt||event;
var div =document.querySelector("div")
div.style.top=e.pageY-div.offsetHeight/2+"px";
div.style.left=e.pageX-divoffsetWidth/2+"px"}
//此处求的是鼠标放到图片中心的相对于页面的坐标
*注意写事件的时候最好带上事件的兼容性好让
我们写的代码兼容大部分浏览器
</script>
键盘事件
keyUp:键抬起时触发的事件;
keyDown:用户按下按键时发生;
keyPress:用户按下按键,并产生一个字符时(意思时说
按ctrl这样的按键是没效果的)
keyCode:获取键盘按键值 字母 ASCII值识别
A:65 a:97 回车:13
**********Keypress的ctrl+回车的返回值为10;
document.οnkeypress=function(evt){
var e=evt||event;
if(e.keyCode==13||e.keyCode==10 && e.ctrlKey) {
alert("send");}}
事件流
当某个事件执行时,从子元素向父元素触发 或 从父元素向
子元素触发时 称为事件流
事件冒泡
事件流的两种模式:
事件冒泡:从子元素向父元素触发-->当某个事件触发时,同样的
事件会向父元素出发
但并不是所有事件都会产生冒泡问题,比如:
onblur onfocus onload不会产生冒泡问题
事件捕获
从父元素向子元素触发
阻止事件冒泡
e.stopPropagation();通过事件对象调用 阻止事件冒泡
e.stopPropagation?
e.stopPropagation?
e.stopPropagation():e.cancelBubble=ture;
阻止浏览器默认事件
e.preventDefault?e.preventDefault():e.returnValue=
false;
return false;
右键不显示菜单,显示div;
e.preventDefault?e.preventDefault():e.returnValue=false