JS实例-事件对象

事件对象:存储了(描述了)事件更加详细的信息

    坐标信息(位置):
    横坐标(x轴):
        event.clientX;
        兼容:Chrome,IE系
        
        ev.clientX;
        兼容:高级浏览器
        低级:undefined

    兼容写法:
        var oEvent = ev || event;

查看当前鼠标的坐标位置:
    onmousemove -> 当你移动鼠标时候
    触发非常密 不要用alert 调试

eg:
div跟着鼠标走
*** 使用clientX,clientY 最好加上滚动宽度,高度 防止在滚动的时候DIV不跟随鼠标

事件冒泡:

子元素身上的事件,会传递给父元素,如果事件相同会执行,不相同不会执行,会继续往上冒

发生包含关系,不是平级关系

阻止事件冒泡:
oEvent.cancelBubble = true;

eg 放大镜(淘宝产品图):

a). 鼠标移入、移出small 显示、隐藏span/big
    b). 给small添加移动事件
        1. 让span 跟着鼠标走
            (减去box的offsetLeft/offsetTop)
        2. 限制范围
            1). 左边最大移动距离
            small盒模型宽度/高度-span盒模型宽度/高度
            2). 右边最大移动距离
            大img的盒模型宽度/高度-big盒模型宽度/高度
        3. 算比例
            左边X轴:scaleX = x/maxW
            左边X轴:scaleY = y/maxH
        4. 右边比例 - > 算img的left/top
    scaleX = ? / (oImg.offsetWidth-oBig.offsetWidth)
    scaleY = ? / (oImg.offsetHeight-oBig.offsetHeight)

    比例:变化的数/定死的数

键盘事件:

<b>onkeydown 当按下键盘的时候</b>

键位对应的键码:
oEvent.keyCode -> 键码
对应一个数字
规律
常用的键:

删除键:8
回车键:13

左键:37
上键:38
右键:39
下键:40

组合键:
*** 在js里面键码不能组合使用

    ctrl:
        ctrlKey
    shift:
        shiftKey
    alt: 
        altKey

<b>oncontextmenu 当点击右键时候</b>

默认行为:
右键有菜单 表单能提交 文本框能输入内容 点击a链接能跳转...

阻止默认行为:
return false;

阻止复制内容途径:
a). ctrl + c
b). 右键

<b>eg 拖拽:</b>
a). 按下鼠标
onmousedown 当按下鼠标的时候
b). 移动
onmousemove 当移动鼠标的时候
c). 抬起鼠标
onmouseup 当抬起鼠标的时候

问题:
    a). 快速拖拽div就不跟着走了
        解决:把move和 up加给docuemnt
    b). 会选中文字
        系统自带的
        阻止默认行为
        解决:return false;

        IE低版本出问题
        捕获(IE独有的):

设置捕获
    obj.setCapture();

释放捕获:
    obj.releaseCapture();

克隆:
obj.cloneNode(); -> 浅克隆
返回新的物体

obj.cloneNode(true); -> 深度克隆 会将内容也复制
参数:默认是false -> 浅克隆


事件冲突:
同一个元素身上,添加了一个事件,但是希望执行不同的函数

添加事件的方式:
    a). <input type="button" onclick="xxx"
    b). oBtn.onclick = xxxx;

事件绑定:解决事件冲突
一种全新的添加事件的方式

事件绑定:
obj.addEventListener(事件名,函数名,是否捕获);
事件名 -> 不能加上 "on"

兼容:高级浏览器
obj.attachEvent(事件名,函数名);
事件名 -> 加上 "on"
兼容: IE10-

兼容性:
    a). || 
    b). if  else

封装一个给物体添加绑定事件的函数:
obj -> 哪个物体
sEv -> 事件名
fn  -> 函数名
addEvent(obj,sEv,fn);

事件解绑定:
问题:
碰见匿名函数出问题了
原因:
函数每次都是new出来的,只要是new出来的东西都不相等

关于匿名函数:

obj.removeEventListener(事件名,函数名,是否捕获);
事件名 -> 不能加上‘on’
参数要与事件的绑定保持一致
兼容:高级浏览器

obj.detachEvent(事件名,函数名);
兼容:IE10-

兼容性:
    removeEvent(obj,sEv,fn);

事件冒泡:
子级 -> 父级
事件的捕获(下沉):
父级 -> 子级
事件的捕获没用!! 直接给false
obj.removeEventListener(事件名,函数名,false);


this出问题的地方:
a). 定时器里面的this
b). 函数包了一层
c). 事件绑定有问题(attachEvent)

九宫格拖拽:
4个边,4个角

右边:
var downX = oEvent.clientX;
var oldW = oBox.offsetWidth;
下边:
var downY = oEvent.clientY;
var oldH = oBox.offsetHeight;
左边:
var downX = oEvent.clientX;
var oldW = oBox.offsetWidth;
var oldL = oBox.offsetLeft;
上边:
var downY = oEvent.clientY;
var oldH = oBox.offsetHeight;
var oldT = oBox.offsetTop;


碰撞检测::
a). 什么时候碰上
r1 > l2 && b1 > t2 && l1 < r2 && t1 < b2
b). 判断没碰上 √
r1 < l2 || b1 < t2 || l1 > r2 || t1 > b2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,100评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,862评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,993评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,309评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,303评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,421评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,830评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,501评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,689评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,506评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,564评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,286评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,826评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,875评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,114评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,705评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,269评论 2 341

推荐阅读更多精彩内容

  • 鼠标滚轮滚动: 鼠标滚轮事件:在页面滚动鼠标滚轮弹出1:onmousewheel -> 当滚动鼠标的滚轮的时候兼容...
    lemontree2000阅读 282评论 0 0
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 6,930评论 1 6
  • 事件对象 鼠标事件 event.clientX在可视区中,鼠标点击的x坐标 event.clientY在可视区中,...
    LaBaby_阅读 579评论 0 1
  • 什么是事件: 事件是交互体验的核心功能 一.事件冒泡: 当一个事件发生时,这个事件会从内向外逐层传递。 二.为什么...
    轻描淡写mua阅读 512评论 0 0
  • 今天,我看一个电视,他给我留下了深刻的印象。 这个电视就是《我爱发明》。 讲一个魏先生用手工割核桃的一层绿慢,就自...
    贾民喆阅读 372评论 0 0