-->鼠标事件
-->event事件对象
-->默认事件
-->键盘事件(keyCode)
-->拖拽效果

一、鼠标事件

onclick ---------------鼠标点击事件
oncontextmenu------鼠标右键点击
onmouseover --------鼠标移上
onmouseout ---------鼠标移出
onmousedown -------鼠标按下
onmousemove -------鼠标移动
onmouseup ----------鼠标抬起

 <head>
<meta charset="UTF-8">
<title>鼠标事件</title>
<style>
*{margin:0;padding:0;list-style: none;}
#con{
width:300px;
height:300px;
background: #ccc;
border:1px solid #666;
margin:10px auto;
}
#con #box{
width:200px;
height:200px;
margin:50px auto;
background: pink;
}
</style>
</head>
<body>
<div id="con">
<div id="box"></div>
</div>
</body>
<script>
var con=document.getElementById('con');
var x=0,y=0,z=0,a=0,b=0,c=0;
//onclick ---------鼠标点击事件
document.onclick=function(){
x++;
console.log('鼠标点击_onclick'+x);
}
//oncontextmenu----鼠标右键点击
document.oncontextmenu=function(){
alert('鼠标右击事件');//先弹出弹框后显示菜单
}
//onmouseover -----鼠标移上(包括子元素)
con.onmouseover=function(){
y++;
console.log('鼠标移上_onmouseover'+y);
}
//onmouseout ------鼠标移出(包括子元素)
con.onmouseout=function(){
z++;
console.log('鼠标移出_onmouseout'+z);
}
//onmouseenter -----鼠标移上
con.onmouseenter=function(){
y++;
console.log('鼠标移上_onmouseenter'+y);
}
//onmouseleave------鼠标移出
con.onmouseleave=function(){
z++;
console.log('鼠标移出_onmouseleave'+z);
}
//onmousedown -----鼠标按下
document.onmousedown=function(){
a++;
console.log('鼠标按下_onmousedown'+a);
}
//onmouseup ------鼠标抬起
document.onmouseup=function(){
b++;
console.log('鼠标按下_onmouseup'+b);
}
//onmousemove -----鼠标移动
con.onmousemove=function(){
c++;
console.log(c);
}
</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=false;
  };
  alert('禁止使用右键!');
}

四、键盘事件(keyCode)

document.onkeydown=function (ev){
  var Event=ev||window.event;
  alert(Event.keyCode);
}

组合键: ctrl + c
Event.ctrlKey&&Event.keyCode==67

 /*禁止右击阻止事件的兼容方式写法*/
document.oncontextmenu=function (ev){
var ev=window.event||ev;
if (ev.preventDefault) {
ev.preventDefault();//w3c阻止默认事件
}else{
ev.returnValue=false;//IE阻止默认事件
};
}
/*对获取键盘键码的兼容写法*/
document.onkeydown=function (ev){
var e=window.event||ev;
console.log(e.keyCode);//打印键码
}

<禁止复制>的练习:

<body>
<p id="con">我要的只是简单地,只是诚实的,好好享受平凡,会好的,一定会好的!我要的只是你爱我,可不是你恨我,哪来的那么多麻烦!</p>
</body>
<script>
var con=document.getElementById('con');
/*阻止元素右击事件*/
con.oncontextmenu=function(ev){
var Event=ev||window.event;
if (Event.preventDefault) {//阻止默认动作(W3C)
Event.preventDefault();
} else{//IE中阻止默认动作
Event.returnValue=false;
};
alert('禁止使用右键!');
}
/*阻止ctrl+c操作*/
document.onkeydown=function(ev){
var e=ev||window.event;
if (e.ctrlKey&&e.keyCode==67) {
if(e.preventDefault()){
e.preventDefault();
}else {
e.returnValue=false;
}
alert('不能这样操作!');
}
}
/*阻止鼠标按下操作*/
document.onmousedown=function(ev){
var e=ev||window.event;
if (e.preventDefault()) {
e.preventDefault();
} else {
e.returnValue=false;
}
alert('禁止鼠标按下!')
}
</script>

五、拖拽效果

主要知识点:

onmousedown onmousemove onmouseup

event.clientX   event.clientY

offset client 系列属性

鼠标拖拽_T:

<head>
<meta charset="UTF-8">
<title>鼠标拖拽_T</title>
<style>
*{margin:0;padding:0;list-style: none;}
#dot{
width:80px;
height:80px;
line-height: 30px;
text-align: center;
font-size:24px;
background: #D00000;
color:#fff;
cursor:move;
position:absolute;
left:300;
top:100;
}
</style>
</head>
<body>
<div id="dot"></div>
</body>
<script>
var dot=document.getElementById('dot');
var x,y;
var xStart,yStart;
var xEnd,yEnd;
dot.onmousedown=function(ev){
var e=window.event||ev;
x=e.offsetX;
y=e.offsetY;
dot.onmousemove=function(ev){
var e=window.event||ev;
var xEnd=e.clientX-x;
var yEnd=e.clientY-y;
dot.style.left=xEnd+'px';
dot.style.top=yEnd+'px';
}
}
dot.onmouseup=function(){
dot.onmousemove=null;
}
</script>

鼠标拖拽_M

 <head>
<meta charset="UTF-8">
<title>鼠标事件</title>
<style>
*{margin:0;padding:0;list-style: none;}
#dot{
width:80px;
height:80px;
line-height: 30px;
text-align: center;
font-size:24px;
background: #D00000;
color:#fff;
cursor:move;
position:absolute;
/* left:0;
top:0; */
}
</style>
</head>
<body>
<div id="dot"></div>
</body>
<script>
var dot=document.getElementById('dot');
var x,y;
var l1,t1;
var lm,tm;
var le,te;
var a=true;
dot.onmousedown=function(ev){
a=true;
var e=window.event||ev;
x=e.offsetX;
y=e.offsetY;
l1=e.clientX-x;
t1=e.clientY-y;
dot.style.left=l1+'px';
dot.style.top=t1+'px';
console.log(x,y);
}
dot.onmousemove=function(ev){
if(a){
var e=window.event||ev;
var lm=e.clientX-x;
var tm=e.clientY-y;
dot.style.left=lm+'px';
dot.style.top=tm+'px';
}
}
dot.onmouseup=function(ev){
a=false;
}
</script>

第53天:鼠标事件、event事件对象的更多相关文章

  1. JS学习笔记9之event事件及其他事件

    -->鼠标事件-->event事件对象-->默认事件-->键盘事件(keyCode)-->拖拽效果 一.鼠标事件 onclick ---------------鼠标点击事 ...

  2. (92)Wangdao.com_第二十五天_线程机制_H5 Web Workers 分线程任务_事件 Event

    浏览器内核 支撑浏览器运行的最核心的程序 IE 浏览器内核            Trident内核,也是俗称的IE内核Chrome 浏览器内核            统称为 Chromium 内核或 ...

  3. 深入理解事件(Event)

    前言 在前一篇文章中讲到了Event 发布与订阅(一) 里面用到了事件来实现一些发布与订阅,当时对事件及其委托理解的还不是太深入,可能在使用上有点捉急.这篇来好好讲讲事件,以及通过一些小DEMO来加深 ...

  4. Event事件与协程

    1.Event事件 Event事件的作用: - 用来控制线程的执行. - 由一些线程去控制另一些线程. 2.进程池与线程池 1)什么是进程池与线程池? 进程池与线程池是用来控制当前程序允许创建(进程/ ...

  5. 通过js触发onPageView和event事件获取页面信息

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814814715022148100/ 承接上一篇文档<js页面触发launch事件编写> pageVi ...

  6. Javascript 事件对象(二)event事件

    Event事件: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...

  7. 简单总结焦点事件、Event事件对象、冒泡事件

    每学习一些新的东西,要学会复习,总结和记录. 今天来简单总结一下学到的几个事件:焦点事件.Event事件对象.冒泡事件 其实这几个事件应该往深的说是挺难的,但今天主要是以一个小菜的角度去尝试理解一些基 ...

  8. 【js】event(事件对象)详解

    1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...

  9. JS Event 鼠标拖拽事件

    <!DOCTYPE html><html> <head>        <meta charset="UTF-8">         ...

随机推荐

  1. E. Almost Regular Bracket Sequence

    题目链接:http://codeforces.com/contest/1095/problem/E 解题心得: 刚开始拿到这个题的时候还真的没什么思路,后来仔细想想还是比较简单的.首先题目要求翻转一个 ...

  2. 为什么我要放弃javaScript数据结构与算法(第十一章)—— 算法模式

    本章将会学习递归.动态规划和贪心算法. 第十一章 算法模式 递归 递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题.递归通常涉及函数调用自身. 递归函数是像下面能够直接调用自身的 ...

  3. 【8086汇编-Day7】关于多个段的程序的实验

    实验一 实验二 实验三 实验四 实验五 实验六 总结 在集成环境下,内存从0770段开始按照段的先后顺序和内容多少分配,并且分配的都是16的倍数 关于实际占用的空间公式的话其实极容易想到(假设有N个字 ...

  4. 【BZOJ4818】序列计数(动态规划,生成函数)

    [BZOJ4818]序列计数(生成函数) 题面 BZOJ 题解 显然是求一个多项式的若干次方,并且是循环卷积 或者说他是一个\(dp\)也没有问题 发现项数很少,直接暴力乘就行了(\(FFT\)可能还 ...

  5. 北京Uber优步司机奖励政策(3月8日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. SIFT 特征点提取算法

    SIFT特征点相对于ORB计算速度较慢,在没有GPU加速情况下,无法满足视觉里程计的实时性要求,或者无法运行在手机平台上,但是效果更好,精度更高.在应用时可以择优选取,了解其本质原理的动机是为了自己使 ...

  7. crash:EXC_ARM_DA_ALIGN(关于内存对齐,memcpy)

    crash:EXC_ARM_DA_ALIGN(关于内存对齐,memcpy) 问题描述 在iOS game开发时做内存拷贝时出现了 crash:EXC_ARM_DA_ALIGN,debug版本不会出现, ...

  8. 三 Hive 数据处理 自定义函数UDF和Transform

    三  Hive 自定义函数UDF和Transform 开篇提示: 快速链接beeline的方式: ./beeline -u jdbc:hive2://hadoop1:10000 -n hadoop 1 ...

  9. 新版本Eclipse安装后插件都在哪里?

    201903版本的Eclipse,选择win安装,下载后的安装包大小只有48.7Mb, 双击安装会会弹出类似eclipse网页,选择需要安装的类型,一般选择Java EE版本 选择好版本后,选择安装目 ...

  10. 拼接index

    import MySQLdb import sys db = MySQLdb.connect(host="127.0.0.1", # your host, usually loca ...