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元素绑定的事件以及绑定代码所在位置 日常的网页开发调试工作中,经常需要知道指定的某个网页元素绑定了哪些事件以及绑定代码的位置,下面介绍三种用来跟踪页面中的事件的方法. ...
随机推荐
- 聊聊RabbitMQ那一些事儿之一基础应用
聊聊RabbitMQ那一些事儿之一基础应用 Hi,各位热爱技术的小伙伴您们好,今年的疫情害人啊,真心祝愿您和您的家人大家都平平安安,健健康康.年前到现在一直没有总结点东西,写点东西,不然久了自己感觉自 ...
- Vue-API之全局配置
API 全局配置 Vue.config 是一个对象,包含 Vue 的全局配置. 源码位置:util/config.js 搜索config 可以找到其源码地址,其中声明了config的类型和默认参数 下 ...
- Android开发 run的时候出现waiting for debugger的情况,及解决问题
出现原因:不清楚,大概推测是因为缓存没有清除干净 解决方法: 方法一. 重新启动模拟器 好像就点右上角的x符号是没有用的,因为会保存状态,在关闭之后还要点击Cold Boot Now,冷启动,才会把之 ...
- php表单提交后再后退 内容则默认清空的解决方法
转载原文地址: http://www.jquerycn.cn/a_14422 在session_start()之后,字符输出之前加上header("Cache-control: privat ...
- 在Shadow DOM使用原生模板
原生模板的优势 延迟了资源加载 延迟了加载和处理模板所引用的资源的时机,这样,用户就能够在模板中使用任意多的资源,却不阻碍页面的渲染. 延迟了渲染内容 无论模板在什么位置,浏览器不会把模板中的内容直接 ...
- clientWidth offsetWidth等视窗尺寸
clientWidth和offsetWidth clientWidth 是一个只读属性,返回元素的内部宽度,该属性包括内边距,但不包括垂直滚动条(如果有).边框和外边距. offsetWidth 是一 ...
- vue 项目总结,以及对未来的理解,对性能方面的认知
之前自己写了一个vue项目,因为没有经验,所以很多方面的提升做的不好,比如说路由.比如说ajax都没有封装,比如说业务逻辑和通用逻辑都混合在一起,导致大片大片重复的代码累积.忽悠忽悠没入门的前端感觉还 ...
- SUCTF checkin
复现的时候看了源码...... 发现文件上传时会对文件内容以及后缀进行严格的检测 同时还有exif_imagetype 这个就用图片马就行绕过,绕过文件后缀试一下传图片马解析为php 但是常规解析 ...
- 简单的编写java的helloWord
那么在上一章章节 http://www.cnblogs.com/langjunnan/p/6814641.html 我们简单的俩了解了一下什么是java和配置编写java的环境,本章呢我们学习如何编写 ...
- web架构之Nginx简介(1)
目录 1.Nginx概述 2.Nginx快速安装 2.1.源码方式安装Nginx 2.2.yum方式安装Nginx 3.Nginx配置文件 4.Nginx核心功能模块 5.Ningx目录介绍 1.Ng ...