1,阻止默认行为;

2,事件监听

3,事件流之事件捕获

4,事件委托

阻止默认行为

浏览器中有很多默认行为,比如当点击a标签后,会发生链接的跳转、当点击鼠标的右键时,

会显示右键菜单等。

有些时候,浏览器的默认行为会影响到我们的程序,所以我们需要阻止默认行为。

return false 就是阻止默认行为的解决方案。

阻止超链接:

  <a href = "1.html" id = "a1">链接</a>

<script>

  a1.onclick = function(){

  return false; //阻止跳转  

  }

</script>

备注:

1.也可以用event.preventDefault()阻止;但低版本的IE有兼容问题,不推荐使用。

2.return confirm("您确定要跳转到xxx页面吗?");

阻止右键菜单:

  <script>

   document.oncontextmenu = function(){

  alert("右键被按下");

  return false ;

}

</script>

阻止文字被选中:

  <script>

  document.onmousedown = function(){

  return false;

  }

</script>

阻止粘贴、复制、剪切;

你可以尝试在该文本域中进行文字上的粘贴,复制,剪切操作。

<input  type = "text" value = "粘贴,复制,剪切" onpaste = "return false" oncopy = "return false" oncut = "return false"/>

阻止表单提交,重置:

<form onsubmit = "return false" onreset = "return false"></form>

事件监听:
要想让JavaScript对用户的操作做出响应,首先要对dom元素绑定事件处理函数。
所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称。
在JavaScript中,有三种绑定事件的方法:
1:在dom元素中直接绑定;
2:在JavaScript代码中绑定;
3:使用事件监听绑定函数;
在DOM元素中直接绑定;
示例:<input type="button" name="" onclick="fn()">
<script type="text/javascript">
function fn(){
alert("");
}
</script>
在JavaScript代码中绑定
示例:<<input type="button" name="" value="" id="btn">
<script type="text/javascript">
btn.onclick = function(){
alert("");
}
</script>
使用事件监听绑定函数
示例:<<input type="button" name="" value="" id="btn">
<script type="text/javascript">
btn.addEventListener("click",function(){
alert("");
})
</script>

事件监听:w3c规范:
语法:element.addEventListener(event,function,true);
参数
event:必须,指事件名称如:click,keyup,mousemove等;
function:必须,指事件触发时,执行的函数;
useCapture:可选,true指捕获阶段,false指冒泡阶段。默认时候为false,冒泡阶段。
DOM2级事件规定的事件流的三个阶段:捕获,目标,冒泡;
1.捕获阶段,当我们在DOM树的某个节点发生了一些操作(例如单击、鼠标移动上去),就会有一个事件发射过去,这个事件从window发出,不断经过下级节点直到触发的目标节点,在到达目标节点之前的过程称为捕获阶段(capture Phase)。(所有经过的节点,都会触发这个事件,捕获阶段的任务就是建立这个事件传递路线,以便后面冒泡阶段顺着这条路线返回window。)
2,目标阶段:当事件不断的传递直到目标节点的时候,最终在目标节点上触发这个事件,就是目标阶段。
3,冒泡阶段:事件冒泡即事件开始时,由具体的元素接收(也就是事件发生所在的节点),然后逐级传播到较为不具体的节点。
当浏览器发展到第四代时(IE4和Netscape Communicator 4),浏览器团队遇到一个很有意思的问题:

想象下在一张纸上有一组同心圆,如果你把手指放在圆心上,那么你的手指指向的不是一个圆,而是一组圆。两家公司的开发团队在看待浏览器事件方面还是一致的。如果你单击了某个按钮,那么同时你也单击了按钮的容器元素,甚至整个页面。

事件流描述的是从页面中接受事件的顺序。但有意思的是,IE和Netscape开发团队居然提出了两个截然相反的事件流概念。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流。

<div id="div1" onclick="alert('div1')">
<div id="div2" onclick="alert('div2')"></div2>
</div>

当点击div2时,IE先执行div2,后执行div1;而Netscape先执行div1,后执行div2。

用js绑定和事件监听绑定的区别和特点:
1,js绑定的事件会覆盖,但是使用事件监听不会被覆盖。
2,js绑定的事件不会覆盖事件监听的事件。
3,事件监听可以改变函数的执行顺序(可以选择冒泡还是捕获)。
4,js绑定的事件return false可以阻止默认行为;而事件监听中return false无效。
注意:使用IE事件监听时,函数的this指向的是window对象。而w3c事件监听,函数内this指向的函数所属的对象。
w3c提供的删除事件处理函数的方法:
obj.removeElementListener(event,fn,false);//删除时需要看fn函数绑定在冒泡阶段还是捕获阶段。
无法同时删除多个事件。
函数的执行顺序:
某一个元素同时具有冒泡和捕获阶段函数时,在非目标阶段时,先执行捕获函数再执行冒泡函数。如果是目标阶段的函数,要看书写的顺序,依次执行。
onclick绑定的函数在冒泡阶段触发;如果同时在addEventListener绑定的冒泡阶段的函数,看书写顺序执行。
IE6、7、8不支持addEventListener所以要用到attachEvent。
IE提供的事件监听;
obj.attachEvent("onclick",fn);
对一个元素绑定多个事件的执行顺序;
高版本IE:从前到后;// 从IE11开始,不支持这种写法。
IE6/7/8:从后到前;
IE提供的删除事件:
obj.detachEvent("onclick",fn);
事件监听的封装:
建立一个函数,解决w3c标准和IE标准的事件监听的兼容。
移除事件的监听的封装:
建立一个函数,解决w3c标准和IE标准的事件监听的兼容。
事件委托也叫事件代理
事件委托就是利用事件冒泡的原理,把事件加到父元素或根元素上,触发执行效果。
优点是可以大量节省内存占用,减少事件注册。
event.target||event.srcElement 获取目标元素
注:target是w3c规范,但IE6,7,8不支持,仅支持srcElement;

Event事件2的更多相关文章

  1. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  2. Event事件

    妙味课堂-Event事件 1.焦点:当一个元素有焦点的时候,那么他就可以接受用户的输入(不是所有元素都能接受焦点) 给元素设置焦点的方式: 1.点击 2.tab 3.js 2.(例子:输入框提示文字) ...

  3. JS学习笔记9之event事件及其他事件

    -->鼠标事件-->event事件对象-->默认事件-->键盘事件(keyCode)-->拖拽效果 一.鼠标事件 onclick ---------------鼠标点击事 ...

  4. JS(event事件)

    常用的event事件: 属性 此事件发生在何时... onabort 图像的加载被中断. onblur 元素失去焦点. onchange 域的内容被改变. onclick 当用户点击某个对象时调用的事 ...

  5. event事件学习小节

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Javascript 事件对象(二)event事件

    Event事件: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" ...

  7. js event 事件兼容浏览器 ie不需要 event参数 firefox 需要

    js event 事件兼容浏览器    ie不需要 event参数   firefox 需要 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  8. PHP event 事件机制

    PHP event 事件机制   <?php /* * PHP 事件机制 */ class baseClass{ private $_e; public function __set($name ...

  9. trigger()的event事件对象之坑

    问题引入,先贴一段有问题的代码,如果你对 trigger()  这个函数了解不透彻,还真看不出这段代码错在哪.完成的功能是样式转换器,想让页面在加载后自行触发点击事件隐藏三个按钮,但是效果如图并没有隐 ...

  10. Event事件详解

    首先提到event,先要明白event的产生,也要先明白焦点,什么是焦点.焦点 : 使浏览器能够区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 我们可以通过一些方式给元素设置 ...

随机推荐

  1. 统计单词数 OpenJ_Bailian - 4030(字符串处理)

    一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中 ...

  2. 【转】MySQL理解索引、添加索引的原则

    索引用于快速找出在某个列中有一特定值的行.不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行,还需要考虑每次读入数据页的IO开销.而如果采取索引,则可以根据索引指向的页以及记录在 ...

  3. Intellij Idea免费激活方法(转)

    文章转自  http://blog.csdn.net/u013772876/article/details/70763759 1.填入下面的license server: http://intelli ...

  4. 深入浅出的webpack构建工具---ParallelUglifyPlugin优化压缩(十)

    webpack默认提供了UglifyJS插件来压缩JS代码,但是它使用的是单线程压缩代码,也就是说多个js文件需要被压缩,它需要一个个文件进行压缩.所以说在正式环境打包压缩代码速度非常慢(因为压缩JS ...

  5. AI 信息论

    信息论,主要用于量化信息. 事件发生的概率越大,包含的信息就越少.例如“太阳从东边升起”,信息量就很少. 1.自信息(self-information) 两个独立事件发生所包含的信息,等于各自发生包含 ...

  6. Linux命令——head/tail

    一.head head主要是用来显示档案的开头至标准输出中,默认打印相应文件的开头10 行. 1)命令格式 head [参数] [文件] 2)常用参数 -q     隐藏文件名-v     显示文件名 ...

  7. linux驱动编写之阻塞与非阻塞

    一.概念 应用程序使用API接口,如open.read等来最终操作驱动,有两种结果--成功和失败.成功,很好处理,直接返回想要的结果:但是,失败,是继续等待,还是返回失败类型呢?  如果继续等待,将进 ...

  8. Codeforces Hello 2019

    Hello 2019 手速场qwq 反正EGH太神仙了啊.jpg 考试的时候不会啊.jpg A 暴力.jpg #include <cstdio> #include <algorith ...

  9. LiveCharts文档-2FAQ

    原文:LiveCharts文档-2FAQ LiveCharts文档-2FAQ 原文链接 LiveCharts基于的平台有WPF,UWP,WinForms:语言是C#, FAQ: 我怎么转换一个char ...

  10. 阿里云ubuntu 16.04搭建odoo11服务器

    ubuntu 16.04 具体如何搭建odoo11网站的具体步骤可以参考这一篇文章 按上面的文章配置环境后,自己网站的启动具体步骤如下: 1.登录阿里云 [远程连接],进入命令行界面1 2.cd到目录 ...