js事件的获取
获取元素样式属性
| Method | DES |
|---|---|
| clientWidth | 获取元素宽度 |
| clientHeight | 获取元素高度(内容+内边距) |
| document.body.clientWidth | 获取body宽度 |
| document.body.clientHeight | 获取body高度 |
| offsetWidth | 包括边框宽度 |
| offsetHeight | 包括边框高度(内容+内边距+边框) |
| offsetLeft | 距离左边距离 |
| offsetTop | 距离右边距离,当前元素距离定位父级的 |
事件对象
作用:捕获用户的操作行为
事件对象的获取:
1、全局event对象--IE9+,chrome
2、形参接收方式--
document.onclick = function(m){
m = m || event;//兼容ie,chrome及IE8-
alert(m);
}
//拖拽
var box = document.getElementById("box");//获取box元素ID
box.onmousedown = function(m){
m = m || event;//兼容浏览器
var initX = m.clientX,//定义鼠标初始位置
initY = m.clientY,
initLeft = box.offsetLeft,//box初始位置
initTop = box.offsetTop;
document.onmousemove = function(m){
m = m || event;
var moveX = m.clientX,//鼠标拖拽位置
moveY = m.clientY,
changeX = moveX - initX,//拖拽改变距离
changeY = moveY - initY;
console.log(changeX,changeY);//打印出改变距离
box.style.left = initLeft + changeX + "px";//box最终显示位置
box.style.top = initTop + changeY +"px";
}
}
document.onmouseup = function(){//当鼠标释放时,跳出移动操作
document.onmousemove = null;
}
//注意:box.onmousemove和document.onmousemove的差别,前者不需要长按住鼠标,而后者需要
冒泡事件
当父元素和子元素都绑定了“相同事件”,
子元素触发事件的时候会传递给父元素,相当于父元素也触发了事件 ——— 事件传播,冒泡事件
var parent = document.getElementById("parent");
var box = document.getElementById("box");
box.onmouseover = function(m){
m = m || event;//兼容模式
m.cancelBubble = true;//阻止冒泡
console.log("子节点");
}
parent.onmouseover = function(){
console.log("父节点=======");
}
监听事件
addEventListener('click', fn2, false) //chrome、IE9+
removeEventListener('click', fn2, false)
参一:注册的事件的事件名字
参二:注册事件的函数
参三:true捕获事件,false冒泡事件(默认值)。
attachEvent('onclick', fn1) //IE8-执行顺序相反
detachEvent('onclick', fn1);
参一:事件名字
参二:注册事件的函数
//兼容模式
function addEvent(dom,eventName,fun){//定义函数
if(dom.addEventListener){//判断事件兼容的浏览器是否为chrome、IE9+
dom.addEventListener(eventName,fun);
}else{//否者执行IE浏览器模式下事件
dom.attachEvent('on'+eventName,fun);
}
}
addEvent(document,'click',fn1);//调用函数
addEvent(document,'click',fn2);
键盘事件
根据输入键盘值(keycode)响应事件;
//例:输入上下左右调整模块
var box = document.getElementById("box");
document.onkeydown = function(m){//传入参数
m = m || event;//兼容模式
var boxLeft = box.offsetLeft,//定义初始距离
boxTop = box.offsetTop;
switch(m.keyCode) {//传递键盘值参数进行循环
case 37://左键keycode=37
boxLeft -= 5;//移动距离
break;
case 38://上键keycode=38
boxTop -= 5;
break;
case 39://右键keycode=39
boxLeft += 5;
break;
case 40://下键keycode=40
boxTop += 5;
break;
default://其他情况
console.log("请输入上下左右按键");
}
box.style.left = boxLeft + "px";//赋值变换后的距离
box.style.top = boxTop + "px";
}
js事件的获取的更多相关文章
- js 事件委托获取子元素下标
html:部分 <ul> <li>第一个</li> <li>第二个</li> <li>第三个</li> <li ...
- js事件技巧方法整合
window.resizeTo(800,600); //js设置浏览器窗口尺寸 window.open (function(){ resizeTo(640,480);//设置浏览器窗口尺寸 moveT ...
- 移动端报表JS开发示例--获取定位
上次分享了移动端报表JS开发的系统概念,后来我又回去摸索了一些案例.之前接触到的FineReport的APP客户端可以用来打卡签到,就好奇研究了以下,这次就来聊一聊报表移动端开发如何实现定位功能. 1 ...
- JS事件
JS事件: 声明:为了事件对象event跨浏览器兼容: var oEvent==ev||event; 所以在下面用到 event 的地方都用 oEvent 代替 1)doucument的 ...
- js事件委托的方式绑定详解
js事件绑定 事件绑定,这里使用了冒泡的原理,从点击的元素开始,递归方式的向父元素传播事件,这样做的好处是对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能. ...
- js事件绑定细节说明
javascript绑定事件: 经常用jQuery去写,时间长了对原生态的js事件绑定的知识会慢慢淡化或者遗忘了,必须翻出来再次总结,今天再次把js原生态事件的处理做个总结. 从最初开始,谁刚接触ja ...
- JS事件委托的原理和应用
js事件委托也叫事件代理,实际上事件委托就是通过事件冒泡实现的,所谓的事件就是onclick,onmouseover,ondown等等,那么委托呢?委托就是指本来这个事是要你自己做的,但是你却让别人帮 ...
- JS事件(事件冒泡和事件捕获)
事件流:描述的是在页面中接收事件的顺序 事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档) 事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件 DOM中:用 ...
- JS事件调试
JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置 日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. ...
随机推荐
- win10下安装LoadRunner12汉化包
1.前提是已经下载LoadRunner安装文件,及已经安装成功: 安装包: 安装成功后,桌面会出现3个图标: 下面,开始安装汉化包: 1.右键点击“HP_LoadRunner_12.02_Commun ...
- RocketMQ - 基础知识
RocketMQ简介 RocketMQ是阿里开源的消息中间件,它是纯java开发,具有低延迟.高吞吐量.高可用性和适合大规模分布式系统应用的特点.从名字可以看出Rocket火箭,代表RocketMQ主 ...
- 工作技术点小计14条 hybrid + animate 方向
设置transition 动画的时候 , js直接设置duration 和 变化值不会起作用 , 需要先设置duration , 等一小会再设置变化值 安卓端 , 窗口不可见时 , window.in ...
- python正则表达式之re模块方法介绍
python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...
- docker的安装使用
目录 Docker 入门到精通 CentOS安装Docker 设置管理Docker的仓库 安装Docker Engine-Community Docker基础命令 开启关闭 镜像操作 容器操作 Doc ...
- call 和 apply 和 bind的区别
有些东西说忘就往,每天记录自己忘记的东西重新学习一遍,挺好 作用:call()和apply()用法都是一样的,改变this的指向问题 区别:接收参数的方式不同, (bind 方法是附加在函数调用后面使 ...
- centOS 6.5 yum升级 gcc4.8 然后又退回来4.4
CentOS 6.5 用了很多年了,一直舍不得省7 . 由于要用到 c++ 11 ,所以决定升级一下. 为了省事我选择用 yum 方式升级,结果最后还是不能用,差点搞坏,这是真机,重装麻烦了. get ...
- def跨域+jwt
1.跨域 由于浏览器具有“同源策略”的限制.如果在同一个域下发送ajax请求,浏览器的同源策略不会阻止.如果在不同域下发送ajax,浏览器的同源策略会阻止. 总结 域相同,永远不会存在跨域. crm, ...
- 原来rollup这么简单之 rollup.rollup篇
大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 分享不易,希望能够得到大家的支持和关注. 计划 rollup系列打算 ...
- vlc 播放器的点播和广播服务
vlc 是一个开源的,同时跨平台的播放器.在研究 rtsp 协议时发现,它同时还是一个强大的流媒体服务器 VLM VLM(VideoLAN Manager) 在 vlc 中是一个小型的媒体管理器,它能 ...