特性说明和原理图: 标准浏览器和Ie9+浏览器都支持事件的冒泡和捕获,而IE8-浏览器只支持冒泡 标准和Ie9+浏览器用stopPropagation()或cancelBubble阻止事件传播,而ie8-用e.cancelBubble属性来阻冒泡,注意ie9不支持cancelBubble属性(设置后不生效),但chrome、safari、opera、firefox都支持cancelBubble属性。 Ie8-用attachEvent为dom元素添加一个事件,但必须在事件名前加上on,此类事件只能在元素的冒
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .father{
很多同学对阻止事件冒泡和阻止事件默认行为容易混淆,项目中因为一些原因也需要阻止浏览器的一些默认行为,这里就简单总结一下。
//得到事件 function getEvent(){ if(window.event) {return window.event;} func=getEvent.caller; while(func!=null){ var arg0=func.arguments[0]; if(arg0){ if((arg0.constructor==Event || arg0.constructor ==MouseEvent
一、知识要点 oEvent.cancelBubble = true; 二、源码参考 点击页面隐藏(模仿下拉列表) <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> #div1 { width: 400px; height: 300px; background: #CCC;
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true
接上一篇,突然想起来,类似于网页里如何使用js禁用鼠标右击事件,还有禁用F12事件也可以禁用一下,总所周知,对于Web开发人员来说,常常要进行界面的调试。使用F12调试工具能够很方便地进行调试,查看html元素,查看响应事件,但是对于自己开发出来的网页,我时常不想被别人看到图片,视频,源码等相关信息,于是常添加这样的代码:
事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。
在开发过程中,明明调试好的阻止冒泡没有问题,但是真正使用 时候发现阻止冒泡失效了,原来原因是点击事件里依赖了异步返回结果。
DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段,事件冒泡顺序是由内到外进行事件传播,事件冒泡是由IE开发团队提出来的,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播。
HTML5+CSS3+JavaScript Web 前端开发案例教程(慕课版)【不推荐】,微信读书中找到的学习Web前端书籍,第9章开始啦,耶(^-^)V
我们知道,例如,百度,这是html最基本的东西,的作用是点击链接百度上http://www.baidu.com,这是属于标签的默认行为。
JavaScript冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件的进一步传播。使用event.preventDefault()可以取消默认事件。
jQuery中有很好用的trigger来触发事件,但总不能写什么都去引入jQuery吧
事件流 事件流两种顺序:冒泡与捕获。 简单的添加与删除事件 obj.onclick=function(){} obj.onclick=null; 通用事件添加的删除 obj.addEventListener(),obj.attachEvent() obj.removeEventListener(),obj.attachEvent() 三个参数分别表示,(事件,绑定函数,事件流), 注意: 1.如果必须得删除事件,这种写法,不能用匿名函数,否则删除函数的时候,不方便。 2.attachEvent的事件名称是o
Konva 的图形同时支持 PC 端和移动端事件, 包括 DOM 元素类似的事件,如 Mouse、Touch、Pointer 事件。
注意下;这里代表了ev.cancelBubble=true;移动端的阻止事件冒泡的代码.
1.HTML事件处理程序 2.DOMO级事件处理程序 3.DOM2级事件处理程序
转自: http://www.cnblogs.com/yushang/archive/2013/03/19/2968782.html
重点:捕获阶段,事件依次传递的顺序是:window --> document --> html--> body --> 父元素、子元素、目标元素。
在我们的日常开发中,或者生活中,经常需要用到弹出窗。这里我们就用js模拟一下qq消息一样的弹出窗。
JavaScript禁用页面刷新代码如下: //禁用F5刷新 document.onkeydown = function () { if (event.keyCode == 116) { event.keyCode = 0; event.cancelBubble = true; return false; } } //禁止右键弹出菜单 document.oncontextmenu = function () { return fals
外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模块定义了一个高层接口,这个接口值得这一子系统更加容易使用。 外观模式在JS中常常用于解决浏览器兼容性问题。
外观模式为子系统提供了一个接口,它屏蔽一个或多个子系统的复杂功,提供了一个一致的界面(接口)给用户。外观模式是一个非常简单的模式,但它的功能却很很强大,非常有用。外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式可以将一些复杂操作封装起来,并创建一个简单的接囗用于调用,它经常出现在多层架构的系统中。
//阻止冒泡的兼容性写法 function stopBubble(event){ var e=arguments.callee.caller.arguments[0]||event; if(e&&e.stopPropagation){ e.stopPropagation() }else if(window.event){ window.event.cancelBubble=true; } } //阻止浏览器默认行为的兼容性写法 function
按照上面的分析,接下来我们只需要对扇形的点击事件做阻止冒泡就好了。 我的测试代码如下: 分别使用了常识里的event.stopPropagation()、return false;,甚至看到params有个cancelBubble也尝试设置成true,都无法生效
比如想实现点击列表弹出筛选器,点击其他任意地方关闭筛选器,如图 该筛选器class名 1 $(document).click(function () { 2 $(".subMenu"
event: 事件对象,当一个事件发生的时候,和当前这个对象发生的这个事件有关的一些详细信息都会被临时保存到一个指定的地方-event对象,供我们在需要的时候调用。
事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而Netscape的事件流是事件捕获流
currentTarget事件属性返回其监听器触发事件的节点,即当前处理该事件的元素、文档或窗口。即点击事件绑定在哪个元素,currentTarget获取的就是那一个元素。在捕获和起泡阶段,该属性是非常有用的,因为在这两个节点,它不同于target属性。
if (e && e.stopPropagation) { //因此它支持W3C的stopPropagation()方法 e.stopPropagation(); } else { //否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; return false;
在前端开发工作中,由于浏览器兼容性等问题,我们会经常用到“停止事件冒泡”和“阻止浏览器默认行为”。
事件对象 包含事件相关的信息,如鼠标、时间、触发的DOM对象等 js默认将事件对象封装好,并自动的以参数的形式,传递给事件处理函数的第1个参数,如下: document.getElementsByTagName("div")[0].onclick = function(e){ e = window.event || e; //兼容IE低版本(事件对象绑定在window的event上) console.log(e);//这里e就是事件对象 } 事件的属性和方法 type:获取事件类型(click、
EasyGBS国标视频云服务平台的灵活性非常强,它不拘泥、不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC、硬盘录像机NVR、且设备支持标准的GB/T28181协议,都可以通过标准化协议注册到平台进行直播、录像检索与回看、云台控制等操作。
<!DOCTYPE html> <html> <title>简单拖曵原理实例</title> <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(function(){ //样式 $("#drag").c
publicvoidHideAllFunction(Pagepage) { if(!
屏蔽鼠标右键 document.oncontextmenu=new Function("event.returnValue=false"); //禁止右键功能 document.onselectstart=new Function("event.returnValue=false"); //禁止选择文字 屏蔽F12调试 /*document.oncontextmenu = function(){return false;}*/ document.onkeydown=funct
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>事件冒泡-提示框</title> 7 </head> 8 <style> 9 button { 10 width: 160px; 11 height: 30px; 12 background-color: #ff0000; 13 color: #fff;
今日分享,面试题一道: 写一个通用的事件侦听器函数(机试题) 本题不难,主要是要能理解,它想考你的是什么? 此题主要考你:事件不同操作的兼容写法 具体实现,可以参考下面代码的实现思路
给元素添加事件,称为注册事件或者绑定事件。 注册事件有两种方式:传统方式和方法监听注册方式
JavaScript事件 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行。事件是基于对象存在,事件通常可以修饰多种对象。 1.为对象添加事件的2种方式 ①:在HTML元素中添加对象的事
我是个前端渣渣,在使用MUI的时候找了好久他的modal,最后发现跟我的实现不一样,于是自己写了一个原生的。
可以实现点击一次按钮,执行两个函数里面的内容, 需要注意的是attachEvent方法和addEventListener的使用,这是一个兼容性的问题 兼容性:IE支持attachEvent而不支持addEventListener,否则会报错;而谷歌火狐则支持addEventlistener。所以存在兼容性的问题。
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title></title> <script type="text/javascript" src='vue.min.js'
对象的概念 创建对象的字面量语法 访问成员运算符 创建对象的构造函数语法 this关键字 添加和删除属性 delete关键字 全局对象 Number / String / Boolean Date / Math / RegEx / Array BOM window对象的属性和方法 history对象 forward() / back() / go() location对象 navigator对象 screen对象 DOM DOM树 访问元素 getElementById() / querySelector(
面向对象 对象的概念 创建对象的字面量语法 访问成员运算符 创建对象的构造函数语法 this关键字 添加和删除属性 delete关键字 标准对象 Number / String / Boolean / Symbol / Array / Function Date / Error / Math / RegExp / Object / Map / Set JSON / Promise / Generator / Reflect / Proxy BOM window对象的属性和方法 his
https://javascript.info/bubbling-and-capturing
领取专属 10元无门槛券
手把手带您无忧上云