Event事件详解
首先提到event,先要明白event的产生,也要先明白焦点,什么是焦点。焦点 : 使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入。
我们可以通过一些方式给元素设置焦点。而并不是所有元素都能够接收焦点的,能够响应用户操作的元素才有焦点。例如:
<input type="text" /> <a href="http://www.baidu.com">百度</a>
说到input,平时用的较多的是onfocus : 当元素获取到焦点的时候触发,onblur : 当元素失去焦点的时候触发。当然还有是不常用:obj.select() -选择指定元素里面的文本内容。
//点击btn时,选中text中的内容
oBtn.onclick = function() {
oText.select();
}
接下来才是event : 事件对象 , 当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细的信息都会被临时保存到一个指定地方-event对象,供我们在需要的调用。而刚刚说的,event会保存相关信息,比如说用来鼠标位置、键盘按键。Event对象的兼容:ev = ev || window.event。而接踵而来的就有clientX[Y] ,它是--当一个事件发生的时候,鼠标到页面可视区的距离。我们可以通过一段代码查看event对象中的属性。
function fn1(ev) {
var ev = ev || event;
for ( var attr in ev ) {
console.log( attr + ' = ' + ev[attr] );
}
}
document.onclick = fn1;
event对象的所有相关属性,都会打印在控制台上。
而由event延伸出来的一个小Demo,就是可以随鼠标任意移动的div。
详见:随鼠标任意移动的div
代码如下:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1 {width: 100px; height:100px; background: red; position: absolute;}
</style>
<script>
window.onload = function() { //onmousemove : 当鼠标在一个元素上面移动的触发
//触发频率不是像素,而是间隔时间,在一个指定时间内(很短),如果鼠标的位置和上一次的位置发生了变化,那么就会触发一次 var i = ; var oDiv = document.getElementById('div1'); document.onmousemove = function(ev) {
//document.title = i++; var ev = ev || event; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; oDiv.style.left = ev.clientX + 'px';
oDiv.style.top = ev.clientY + scrollTop + 'px'; } }
</script>
</head> <body style="height: 2000px;">
<div id="div1"></div>
</body>
</html>
提到事件,一定会想到事件冒泡 : 当一个元素接收到事件的时候,会把他接收到的所有传播给他的父级,一直到顶层window.事件冒泡机制。而阻止冒泡 : 当前要阻止冒泡的事件函数中调用 event.cancelBubble = true; 比较简单一个就是模拟的下拉列表。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
#div1 {width:100px; height:200px; border: 1px solid red; display: none;}
</style>
<script>
window.onload = function() {
var oBtn = document.getElementById('btn');
var oDiv = document.getElementById('div1'); oBtn.onclick = function(ev) {
var ev = ev || event;
ev.cancelBubble = true;//阻止当前对象的当前事件的冒泡
oDiv.style.display = 'block';
} document.onclick = function() {
oDiv.style.display = 'none';
} }
</script>
</head> <body>
<input type="button" value="按钮" id="btn" />
<div id="div1"></div>
</body>
</html>
Event事件详解的更多相关文章
- JavaScript——event事件详解
1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- JavaScript事件详解-zepto的事件实现
zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...
- JS中的event 对象详解
JS中的event 对象详解 JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...
- JAVASCRIPT事件详解-------原生事件基础....
javaScirpt事件详解-原生事件基础(一) 事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能 ...
- (转)javascript中event对象详解
原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解 博客分类: javaScript JavaScriptCS ...
- iOS中—触摸事件详解及使用
iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...
- js中鼠标滚轮事件详解
js中鼠标滚轮事件详解 (以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用 ...
随机推荐
- nginx低版本不支持pathinfo模式,thinkphp针对此问题的解决办法
将一个thinkphp项目从apache环境移到nginx1.2上,怎奈,nginx这个版本默认不支持pathinfo模式 首先,编辑nginx的虚拟主机配置文件 location ~ .*.(php ...
- 硬盘4k对齐教程总结
4k对齐概念: 4K对齐相关联的是一个叫做“高级格式化”的分区技术.首先先来了解一下什么是叫做“4K 对齐”.其实“4K对齐”相关联的是一个叫做“高级格式化”的分区技术.“高级格式化”是国际硬盘设备与 ...
- DB天气app冲刺第十二天
今天其实不算冲刺了 ,因为今天没怎么花时间在软件上,而是花时间在老师留的作业上了.所以也算作是软件工程这门课的冲刺吧. DB天气这款app上今天的api接口还是木有弄好.明天会继续弄.但是全国城市的数 ...
- 使用eclipse生成文档(javadoc)
使用eclipse生成文档(javadoc)主要有三种方法:1,在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步.在Java ...
- CQRS学习——集成ASP.NET Identity[其五]
[其实和Cqrs没啥关系] 缘由 其实没啥原因,只是觉得以前写了不知多少遍的用户登录复用性太差,实现的功能也不多. 依赖的Nuget包 简单登陆 就简单登陆而言,只需要实现如下接口/抽象类: Stor ...
- BZOJ 4123 [Baltic2015] Hacker 解题报告
首先,Alice 会选择一个长度为 $\lfloor\frac{n+1}{2}\rfloor$ 的区间,我们把这个长度记为 $len$. 有这么一个结论:令 $F_i$ 为覆盖 $i$ 点的所有长度为 ...
- EasyUI datagrid 改变url属性 实现动态加载数据
$(function () { //说明:btnsearch按钮,selCat下拉列表,ttdatagrid table $("#btnsearch").click(functio ...
- DeepID人脸识别算法之三代(转)
DeepID人脸识别算法之三代 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/42091205 DeepID,目前最强人脸识别算法,已经三 ...
- uva 10404
dp 1表示先手赢 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- 将ANGULAR与后端请求结合
简单的结合,却是很多应用的基础.RESTFUL就此而生.瘦服务,富客户. <!DOCTYPE html> <html lang="en" ng-app=" ...