首页 > 代码库 > JS学习笔记9之event事件及其他事件
JS学习笔记9之event事件及其他事件
-->鼠标事件
-->event事件对象
-->默认事件
-->键盘事件(keyCode)
-->拖拽效果
一、鼠标事件
onclick ---------------鼠标点击事件
oncontextmenu------鼠标右键点击
onmouseover --------鼠标移上
onmouseout ---------鼠标移出
onmousedown -------鼠标按下
onmousemove -------鼠标移动
onmouseup ----------鼠标抬起
1 <head> 2 <meta charset="UTF-8"> 3 <title>鼠标事件</title> 4 <style> 5 *{margin:0;padding:0;list-style: none;} 6 #con{ 7 width:300px; 8 height:300px; 9 background: #ccc;10 border:1px solid #666;11 margin:10px auto;12 }13 #con #box{14 width:200px;15 height:200px;16 margin:50px auto;17 background: pink;18 }19 </style>20 </head>21 <body>22 <div id="con">23 <div id="box"></div>24 </div>25 </body>26 <script>27 var con=document.getElementById(‘con‘);28 var x=0,y=0,z=0,a=0,b=0,c=0;29 //onclick ---------鼠标点击事件30 document.onclick=function(){31 x++;32 console.log(‘鼠标点击_onclick‘+x);33 }34 //oncontextmenu----鼠标右键点击35 document.oncontextmenu=function(){36 alert(‘鼠标右击事件‘);//先弹出弹框后显示菜单37 }38 //onmouseover -----鼠标移上(包括子元素)39 con.onmouseover=function(){40 y++;41 console.log(‘鼠标移上_onmouseover‘+y);42 }43 //onmouseout ------鼠标移出(包括子元素)44 con.onmouseout=function(){45 z++;46 console.log(‘鼠标移出_onmouseout‘+z);47 }48 //onmouseenter -----鼠标移上49 con.onmouseenter=function(){50 y++;51 console.log(‘鼠标移上_onmouseenter‘+y);52 }53 //onmouseleave------鼠标移出54 con.onmouseleave=function(){55 z++;56 console.log(‘鼠标移出_onmouseleave‘+z);57 }58 //onmousedown -----鼠标按下59 document.onmousedown=function(){60 a++;61 console.log(‘鼠标按下_onmousedown‘+a);62 }63 //onmouseup ------鼠标抬起64 document.onmouseup=function(){65 b++;66 console.log(‘鼠标按下_onmouseup‘+b);67 }68 //onmousemove -----鼠标移动69 con.onmousemove=function(){70 c++;71 console.log(c);72 }73 </script>
二、event事件对象
event对象只在事件发生的过程中才有效
用途:需要获取和事件相关的信息时使用
如:
获取键盘按下或弹起的按键
获取鼠标的位置坐标
获取事件名称
获取事件生成的日期时间
等等......
event对象中包含了所有与事件相关的信息
所有浏览器都支持event对象,只是支持的方式不一样
- FireFox、Chrome等浏览器要获取到event对象,需要从函数中传入,参数名随意
- 而IE在浏览器中event作为window对象的一个属性存在,可以直接使用 event 或 window.event
例如:
document.onmousedown=function ( ev ){
var Event = ev || window.event ; //兼容各个浏览器
alert( Event.clientX ) ;// 弹出鼠标相对窗口的X轴坐标
console.log(Event);
};
关于使用event事件的兼容写法:
//IE9以上 谷歌 火狐支持 / IE6、7、8不支持 document.onclick=function (ev){ var e=ev; console.log(‘鼠标指针对于浏览器页面的水平坐标‘+e.clientX); }//IE 谷歌支持/ 火狐不支持 document.onclick=function (){ var e=window.event||ev; console.log(‘鼠标指针对于浏览器页面的垂直坐标‘+e.clientY); }/*兼容各个浏览器,event事件写法*/ document.onclick=function (ev){ var eve=window.event||ev;//event事件兼容写法写法 console.log(eve.clientY); console.log(eve.preventDefault); }
三、默认事件
阻止默认事件(阻止使用右键事件)
document.oncontextmenu = function(ev) {
var Event=ev||window.event;
if (Event.preventDefault) {
//阻止默认动作(W3C)
Event.preventDefault();
} else{
//IE中阻止默认动作
Event.returnValue=http://www.mamicode.com/false;
};
alert(‘禁止使用右键!‘);
}
四、键盘事件(keyCode)
document.onkeydown=function (ev){
var Event=ev||window.event;
alert(Event.keyCode);
}
组合键: ctrl + c
Event.ctrlKey&&Event.keyCode==67
1 /*禁止右击阻止事件的兼容方式写法*/ 2 document.oncontextmenu=function (ev){ 3 var ev=window.event||ev; 4 if (ev.preventDefault) { 5 ev.preventDefault();//w3c阻止默认事件 6 }else{ 7 ev.returnValue=http://www.mamicode.com/false;//IE阻止默认事件 8 }; 9 }10 /*对获取键盘键码的兼容写法*/11 document.onkeydown=function (ev){12 var e=window.event||ev;13 console.log(e.keyCode);//打印键码14 }
<禁止复制>的练习:
1 <body> 2 <p id="con">我要的只是简单地,只是诚实的,好好享受平凡,会好的,一定会好的!我要的只是你爱我,可不是你恨我,哪来的那么多麻烦!</p> 3 </body> 4 <script> 5 var con=document.getElementById(‘con‘); 6 /*阻止元素右击事件*/ 7 con.oncontextmenu=function(ev){ 8 var Event=ev||window.event; 9 if (Event.preventDefault) {//阻止默认动作(W3C)10 Event.preventDefault();11 } else{//IE中阻止默认动作12 Event.returnValue=http://www.mamicode.com/false;13 };14 alert(‘禁止使用右键!‘);15 }16 /*阻止ctrl+c操作*/17 document.onkeydown=function(ev){18 var e=ev||window.event;19 if (e.ctrlKey&&e.keyCode==67) {20 if(e.preventDefault()){21 e.preventDefault();22 }else {23 e.returnValue=http://www.mamicode.com/false;24 }25 alert(‘不能这样操作!‘);26 }27 }28 /*阻止鼠标按下操作*/29 document.onmousedown=function(ev){30 var e=ev||window.event;31 if (e.preventDefault()) {32 e.preventDefault();33 } else {34 e.returnValue=http://www.mamicode.com/false;35 }36 alert(‘禁止鼠标按下!‘)37 }38 </script>
五、拖拽效果
主要知识点:
onmousedown onm ousemove onm ouseup
event.clientX event.clientY
offset client 系列属性
鼠标拖拽_T:
1 <head> 2 <meta charset="UTF-8"> 3 <title>鼠标拖拽_T</title> 4 <style> 5 *{margin:0;padding:0;list-style: none;} 6 #dot{ 7 width:80px; 8 height:80px; 9 line-height: 30px;10 text-align: center;11 font-size:24px;12 background: #D00000;13 color:#fff;14 cursor:move;15 position:absolute;16 left:300;17 top:100;18 }19 </style>20 </head>21 <body>22 <div id="dot"></div>23 </body>24 <script>25 var dot=document.getElementById(‘dot‘);26 var x,y;27 var xStart,yStart;28 var xEnd,yEnd;29 dot.onmousedown=function(ev){30 var e=window.event||ev;31 x=e.offsetX;32 y=e.offsetY;33 dot.onmousemove=function(ev){34 var e=window.event||ev;35 var xEnd=e.clientX-x;36 var yEnd=e.clientY-y;37 dot.style.left=xEnd+‘px‘;38 dot.style.top=yEnd+‘px‘;39 }40 }41 dot.onmouseup=function(){42 dot.onmousemove=null;43 }44 </script>
鼠标拖拽_M
1 <head> 2 <meta charset="UTF-8"> 3 <title>鼠标事件</title> 4 <style> 5 *{margin:0;padding:0;list-style: none;} 6 #dot{ 7 width:80px; 8 height:80px; 9 line-height: 30px;10 text-align: center;11 font-size:24px;12 background: #D00000;13 color:#fff;14 cursor:move;15 position:absolute;16 /* left:0;17 top:0; */18 }19 </style>20 </head>21 <body>22 <div id="dot"></div>23 </body>24 <script>25 var dot=document.getElementById(‘dot‘);26 var x,y;27 var l1,t1;28 var lm,tm;29 var le,te;30 var a=true;31 dot.onmousedown=function(ev){32 a=true;33 var e=window.event||ev;34 x=e.offsetX;35 y=e.offsetY;36 l1=e.clientX-x;37 t1=e.clientY-y;38 dot.style.left=l1+‘px‘;39 dot.style.top=t1+‘px‘;40 console.log(x,y);41 }42 dot.onmousemove=function(ev){43 if(a){44 var e=window.event||ev;45 var lm=e.clientX-x;46 var tm=e.clientY-y;47 dot.style.left=lm+‘px‘;48 dot.style.top=tm+‘px‘;49 }50 }51 dot.onmouseup=function(ev){52 a=false;53 }54 </script>
JS学习笔记9之event事件及其他事件