js的event事件
一 . 焦点:使浏览器能够区分区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入。
我们可以通过一些方式给元素设置焦点
1.点击 2.tab 3.js
不是所有元素都能够接受焦点的,能够响应用户操作的元素才有焦点(比如:输入框,可以响应用户的输入 按钮-可以响应用户的点击操作 a标签-可以响应用户的跳转等)
Obj.onfocus=function(){} obj.onblur=function(){} obj.focus(); obj.blur()
obj.select()------会把obj的内容全部选中 (选中的内容是可交互性的文本内容)
<input type="text" id="txt">
<button id="btn">选中文字</button>
window.onload=function(){
var txt = document.getElementById('txt');
var btn = document.getElementById('btn');
btn.onclick = function () {
txt.select();
}
}
二. event:事件对象,当一个对象发生的时候,和当前这个对象发生的这个事件有关的一些详细的信息都会被临时保存到一个指定的地方event对象,供我们在需要的时候调用。
如果一个函数是被事件函数调用的,那么,这个函数定义的第一个参数就是事件对象(event),它是一个内置的全局对象。
在使用的时候有浏览器兼容的问题 在标准的浏览器下 可以直接取到event 而在非标准的浏览下,是取不到的。 Var ev = ev || event; ----解决了兼容性的问题。
document.onclick = function () {
fn();
}
function fn (ev){
var ev = ev || event;
alert(ev);
for (attr in ev) {
console.log(attr + '=' + ev[attr]);
}
}
三. clientX clientY ---当一个事件发生的时候,鼠标到页面可视区的距离
一个小小的列子 div跟随鼠标移动
<!DOCTYPE html>
<html ng-app = 'myApp'>
<head>
<title></title>
<meta name="name" content="content" charset="utf-8">
<style type="text/css" media="screen">
div{width:100px;height: 100px;background-color: red;position: absolute;}
</style>
<script type="text/javascript">
window.onload = function () {
var oDiv = document.getElementById('div1');
document.onmousemove = function (ev) {
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>
<div id="div1"></div>
</body>
</html>
四.事件流
事件冒泡:当一个元素接收到事件的时候,会把他接受到的所有传播给他的父级,一直到顶层window.
<style type="text/css" media="screen">
div{padding: 40px;}
#div1{background-color: red;}
#div2 {background-color: blue;}
#div3 {background-color: green;}
</style>
<script type="text/javascript">
window.onload = function () {
var oDiv1 = document.getElementById('div1');
var oDiv2 = document.getElementById('div2');
var oDiv3 = document.getElementById('div3'); function aa(){
alert(this.id);
}
oDiv1.onclick = aa;
oDiv2.onclick = aa;
oDiv3.onclick = aa;
}
</script>
<div id="div1">
<div id="div2">
<div id="div3"></div>
</div>
</div>
当点击div3的时候,会依次弹出div3 div2 div1,当点击div2的时候,会依次弹出div2 div1,这个就是冒泡机制,会依次向父级一直冒泡,直至window.
阻止冒泡:当前要阻止冒泡的事件函数中调用event.cancelBubble = true;或者 event.stopPropagation();
绑定事件:给一个对象的同一个事件绑定多个不同的函数
兼容性:ie:obj.attachEvent(事件名称,事件函数)
- 没有捕获
- 事件名称有on
- 事件函数执行的顺序:标准的ie下为---正序 非标准的ie下为---倒序
- This指向window
标准:obj.addEventListener(事件名称,事件函数,是否捕获)
- 有捕获
- 事件名称没有on
- 事件执行的顺序是正序
- This指向触发改事件的对象
window.onload = function () {
var oDiv1 = document.getElementById('div1');
function aa(){
alert(this);
}
function bb(){
alert(1);
}
// 正常情况下,bb函数会覆盖aa函数,值弹出1.
// oDiv1.onclick = aa;
// oDiv1.onclick = bb;
// 在ie下,函数都会执行,但是执行的顺序不一样
// oDiv1.attachEvent('onclick',aa);
// oDiv1.attachEvent('onclick',bb);
// 在标准浏览器下,函数都会正序执行
oDiv1.addEventListener('click',aa,false);
oDiv1.addEventListener('click',bb,false);
}解决this的指向不同,利用call()方法,改变this的指向
Call()方法,改变this的指向 call方法的第一个参数可以改变函数执行过程中的内部this的指向,call方法第二个参数开始就是原来函数的参数列表
function fn1(a){
alert(this); } function fn2(a,b){
alert(this);
alert(a+b);
}
//fn1(); //window
// fn1.call(1); //1
fn2.call(1,2,3) //1 5
fn2.call(null,2,3) //window 5- 兼容ie以及标准浏览器的事件绑定函数
function bind(obj,evname,fn) {
if (obj.addEventListener) {
obj.addEventListener(evname,fn,false);
} else {
obj.attachEvent('on'+evname, function () {
fn.call(obj);
})
}
} 关键一句:在W3C(或支持事件捕获的)浏览器中,先发生捕获的过程,再发生冒泡的过程。
oDiv1.addEventListener('click',function(){
alert(1);
},true); //捕获事件
oDiv1.addEventListener('click',function(){
alert(2);
},false); //冒泡事件
oDiv3.addEventListener('click',function(){
alert(3);
},true); //捕获事件当点击div1的时候,会弹出1 2
当点击div2的时候, 会弹出1 2
当点击div3的时候 会弹出 1 3 2
点击div1的时候,是捕获事件,会从最外层开始开始捕获事件,div1有2个事件,捕获时,弹出1,冒泡是弹出2. 所以会弹出1 2
点击div2的时候,由于div2没有加事件,但是它默认的会执行捕获事件,从最外层开始,一直到div2 然后再向外层冒泡 所以会弹出 1 2
点击div3的时候 是捕获事件,从最外层开始,一直到div3 ,然后再向外层冒泡 所以会弹出 1 3 2

取消事件绑定
ie : obj.detachEvent(事件名称,事件函数)
标准:obj.removeEventListener(事件名称,事件函数,是否捕获)
js的event事件的更多相关文章
- 【js】event(事件对象)详解
1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...
- js的event事件对象汇总
JavaScript事件对象是浏览器默认传入的,但是对于浏览器的兼容问题,我们需要对事件对象进行兼容.但是jQuery已经帮我们解决了所有兼容性的问题,并且给我们添加了很多有用的方法.已经是比较历史的 ...
- js event 事件兼容浏览器 ie不需要 event参数 firefox 需要
js event 事件兼容浏览器 ie不需要 event参数 firefox 需要 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...
- JavaScript -- 时光流逝(八):js中的事件Event的使用
JavaScript -- 知识点回顾篇(八):js中的事件Event的使用 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行. (1) onabort : onabort 事件会在图像 ...
- 通过js触发onPageView和event事件获取页面信息
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814814715022148100/ 承接上一篇文档<js页面触发launch事件编写> pageVi ...
- JS学习笔记9之event事件及其他事件
-->鼠标事件-->event事件对象-->默认事件-->键盘事件(keyCode)-->拖拽效果 一.鼠标事件 onclick ---------------鼠标点击事 ...
- JS(event事件)
常用的event事件: 属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事 ...
- Event事件
妙味课堂-Event事件 1.焦点:当一个元素有焦点的时候,那么他就可以接受用户的输入(不是所有元素都能接受焦点) 给元素设置焦点的方式: 1.点击 2.tab 3.js 2.(例子:输入框提示文字) ...
- 怎么理解js中的事件委托
怎么理解js中的事件委托 时间 2015-01-15 00:59:59 SegmentFault 原文 http://segmentfault.com/blog/sunchengli/119000 ...
随机推荐
- nodejs + nginx + ECS阿里云服务器环境设置
nodejs + nginx + ECS阿里云服务器环境设置 部署 nodejs ECS 基于 CentOS7.2 详细步骤:click 部署 nginx 安装 添加Nginx软件库: [root@l ...
- URL传中文参数导致乱码的解决方案之encodeURI
通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码问题,解决方案有很多种,本文主要介绍如何通过encodeURI来解决中文乱码问题: first:前端传递参数的时候需要对中文参数进行两次en ...
- Linux基础(7)
Linux 基础(7) 一.内存的监控(free) free -m 以单位为MB的方式查看内存的使用情况(free命令读取的文件是/proc/meminfo) total:是指计算机安装的内存总量 u ...
- Python-3------新年考试周的Python学习
2016一开始就是考试周,准备专业课的考试复习.每天上午复习,晚上复习到8点半,之后到10点这点时间来看Python.庆幸没有在忙碌的时候荒废 Python的学习. 期待寒假,以前寒假在家总是没事做, ...
- bzoj2876 [Noi2012]骑行川藏
Description 蛋蛋非常热衷于挑战自我,今年暑假他准备沿川藏线骑着自行车从成都前往拉萨.川藏线的沿途有着非常美丽的风景,但在这一路上也有着很多的艰难险阻,路况变化多端,而蛋蛋的体力十分有限,因 ...
- JavaScript中var变量引用function与直接声明function
今天在h5开发app的过程中遇到了一个js问题,function的执行问题 在js中声明函数function有这两种方法 var A=function(){...} 或者 function A(){. ...
- MySQL 完整和增量备份与恢复
MySQL 完全备份与恢复 1.数据备份的重要性 在企业中数据的价值至关重要,数据保障了企业的业务的运行,因此数据的安全性及可靠性是运维的重中之重,任何数据的丢失都有可能会对企业产生严重的后果.造成数 ...
- DDD理论学习系列(1)-- 通用语言
1.引言 在开始之前,我想我们有必要先了解以下DDD的主要参与者.因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是? DDD的主要参与者:领域专家+开发人员 领域专家:精通业务的任 ...
- Gartner:当商业智能成熟度低时,如何加快分析采用率
文 | 水手哥 本文出自:知乎专栏<帆软数据应用研究院>--数据干货&资讯集中地 根据Gartner近7年的调查结果,71%的受访企业处于低成熟度阶段,也就是Gartner五级BI ...
- oracle的神奇化学反应(行转列+获取表字段)
橘子+汽水=橘子汽水,∑(゚Д゚ノ)ノ好无聊!!! 火鸡+烤架=烤火鸡,ლ(´ڡ`ლ)还不错. wm_concat()+表字段查询=(✪ω✪)会是啥呢? wm_concat()函数,该函数可以把列值以 ...