-->鼠标事件
-->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>

JS学习笔记9之event事件及其他事件的更多相关文章

  1. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  2. 基于jquery的插件turn.js学习笔记

    基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...

  3. 【转】Backbone.js学习笔记(二)细说MVC

    文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...

  4. WebGL three.js学习笔记 创建three.js代码的基本框架

    WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...

  5. JS学习笔记5_DOM

    1.DOM节点的常用属性(所有节点都支持) nodeType:元素1,属性2,文本3 nodeName:元素标签名的大写形式 nodeValue:元素节点为null,文本节点为文本内容,属性节点为属性 ...

  6. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...

  7. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

随机推荐

  1. Change Line Type in OpenCascade

    Change Line Type in OpenCascade eryar@163.com 关键字KeyWords:OpenCascade,Line Aspect, Line Type 在OpenCa ...

  2. Repository 返回 IQueryable?还是 IEnumerable?

    这是一个很有意思的问题,我们一步一步来探讨,首先需要明确两个概念(来自 MSDN): IQueryable:提供对未指定数据类型的特定数据源的查询进行计算的功能. IEnumerable:公开枚举数, ...

  3. C语言 编程练习22题

    一.题目 1.编一个程序,输入x的值,按下列公式计算并输出y值: 2.已知数A与B,由键盘输入AB的值,交换它们的值,并输出. 3.给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位 ...

  4. RichTextBox实现鼠标右键(剪切,复制,粘贴)功能

    private static void InitRichTextBoxContextMenu(RichTextBox textBox) { //创建剪切子菜单 var cutMenuItem = ne ...

  5. C#动态调用WCF接口,两种方式任你选。

    写在前面 接触WCF还是它在最初诞生之处,一个分布式应用的巨作. 从开始接触到现在断断续续,真正使用的项目少之又少,更谈不上深入WCF内部实现机制和原理去研究,最近自己做一个项目时用到了WCF. 从这 ...

  6. WebSocket 介绍(二)-WebSocket API

    这一章介绍如何用WebSocket API来控制协议和创建应用,运用http://websocket.org 提供的现有WebSocket服务器,我们可以收发消息.创建一些简单的WebSocket应用 ...

  7. 大小写互换-"数字字符串"转换成数字

    今天穿着hacker浑浊马甲在百度编程课堂实训习题中发现了这个很简单的问题,就做了下. 为了考虑输入的是否是数字,结果写好后竟然超时了. 不过里面用到的将字符串装换成数字的方法,感觉是个收获,因此在此 ...

  8. Sublime Text 使用介绍、全套快捷键及插件推荐

    开篇:如果说Notepad++是一款不错Code神器,那么Sublime Text应当称得上是神器滴哥.Sublime Text最大的优点就是跨平台,Mac和Windows均可完美使用:其次是强大的插 ...

  9. Elasticsearch 教程--分布式集群

    集群 补充章节 正如前文提到的,这就是第个补充的章节,这里会介绍 Elasticsearch 如何在分布式环境中运行. 本章解释了常用术语,比如 集群 (cluster), 节点 (node) 以及  ...

  10. 【UWP开发】一个简单的Toast实现

    Toast简介 在安卓里Toast是内置原生支持,它是Android中用来显示显示信息的一种机制.它主要用于向用户显示提示消息,没有焦点,显示的时间有限,过一定的时间就会自动消失.在UWP中虽然没有原 ...