随笔分类 -  DOM/Event

1 2 下一页

强大的DOM变化观察者MutationObserver
摘要:在这之前 DOM3 提供了 Mutation events 事件 可以监听到属性、文本内容、节点插入删除、子节点变化等事件。可是该事件 W3C 已废弃,虽然一些浏览器仍然支持,但不建议使用。 MutationObserver目前IE11+及其它浏览器最新版本都已支持。可以通过以下代码判断是否支持 使 阅读全文

posted @ 2016-04-10 05:57 snandy 阅读(5667) 评论(1) 推荐(2) 编辑

addEventListener 的另类写法
摘要:addEventListener 参数如下addEventListener(type, listener[, useCapture]);type,事件名称listener,事件处理器useCapture,是否捕获一直把 listener 记成是响应函数,function 类型。相信很多人也是这么理解... 阅读全文

posted @ 2015-10-15 07:59 snandy 阅读(4845) 评论(5) 推荐(7) 编辑

matchesSelector及低版本IE中对该方法的实现
摘要:matchesSelector用来匹配dom元素是否匹配某css selector。它为一些高级方法的实现提供了基础支持,比如事件代理,parent, closest等。W3C在2006年就提出了该方法草案,Firefox和Safari相继实现,比如 目前除IE6-IE8,Firefox/Chro... 阅读全文

posted @ 2014-06-03 07:38 snandy 阅读(3893) 评论(4) 推荐(3) 编辑

JavaScript获取图片的原始尺寸
摘要:页面里的img元素,想要获取它的原始尺寸,以宽度为例可能首先想到的就是width,如下这里使用的getWH方法是之前文章里提到的。这时候获取的宽度和图片的原始尺寸是一样的。如果给img加上了width属性,这种方式就不行了,比如图片实际宽度是690,设置了width为400,这时按上面的方式获取则返... 阅读全文

posted @ 2014-05-04 07:20 snandy 阅读(69137) 评论(8) 推荐(10) 编辑

JavaScript判断图片是否加载完成的三种方式
摘要:有时需要获取图片的尺寸,这需要在图片加载完成以后才可以。有三种方式实现,下面一一介绍。一、load事件 img - load event loading... 测试,所有浏览器都显示出了“loaded”,说明所有浏览器都支持img的load事件。二、readystatechange事件 ... 阅读全文

posted @ 2014-05-03 17:00 snandy 阅读(118473) 评论(4) 推荐(11) 编辑

将HTML特殊转义为实体字符的两种实现方式
摘要:前端开发工作中,经常需要将HTML的左右尖括号等转义成实体形式。我们不能把,&等直接显示在最终看到的网页里。需要将其转义后才能在网页上显示。转义字符(Escape Sequence)也称字符实体(Character Entity)。定义转义字符串的主要原因是“”等符号已经用来表示HTML TAG,因此不能直接当作文本中的符号来使用。但有时需求是在HTML页面上使用这些符号,所以需要定义它的转义字符串。有些字符在ASCII字符集中没有定义(如版权符号“©”)。因此需要使用转义字符(“©”对应的转义字符是“©”)来表示。这里提供两个函数escape和u 阅读全文

posted @ 2013-07-19 15:15 snandy 阅读(25244) 评论(3) 推荐(2) 编辑

IE9/Firefox/Safari/Chrome/Opera支持模拟触发自定义DOM事件
摘要:自定义DOM事件是在DOM3中定义的,它不是由DOM原生触发。自定义事件只能通过addEventListener方式添加,其它如内联到html或DOM0方式(el.onXXX=fn)添加的不能触发。如<!-- 内联事件代码 --><div id="d1" onmyevent="alert(this)">DIV1</div><script> // DOM 0 方式添加 d1.onmyevent = function(){alert(this)}</script>以下方式可以<!DOCTYPE 阅读全文

posted @ 2012-09-12 17:17 snandy 阅读(2151) 评论(1) 推荐(0) 编辑

事件处理程序的执行上下文
摘要:以下五种方式添加事件<!doctype html><html> <head> <title>事件处理程序的执行上下文</title> <meta charset="utf-8"> <style> div { background: gold; margin: 10px; } </style> </head> <body> <!-- 内联事件代码 --> <div id="d1" onclick="alert( 阅读全文

posted @ 2012-09-10 17:45 snandy 阅读(956) 评论(0) 推荐(0) 编辑

querySelector和getElementById通过id获取元素的区别
摘要:这是sina同事xiaoniu发现的,如下<!DOCTYPE html><html> <head> <meta charset="utf-8"/> </head> <body> <div id="02E503E2A1C011CFC85B7B701A0677EC0900000000000001"></div> <script> var str = '02E503E2A1C011CFC85B7B701A0677EC090000000000000 阅读全文

posted @ 2012-04-20 10:58 snandy 阅读(5996) 评论(6) 推荐(2) 编辑

读jQuery之十六(事件代理)
摘要:事件代理的实现原理很简单:利用浏览器中事件的冒泡(event bubbling)和事件源(target || srcElement)。某些场景中特别适合使用事件代理,它有如下好处需要管理的handler更少。占用的内存更少(创建的驻留在内存中的handler少了)。DOM元素与代码更少的绑定。DOM... 阅读全文

posted @ 2011-09-02 11:48 snandy 阅读(9119) 评论(2) 推荐(1) 编辑

读jQuery之十五
摘要:在之前的event-jq-0.2.js基础上继续提取jQuery的trigger和namespace。实现功能如下// add eventE.bind(el, 'click', fn);E.bind(el, 'click.name', fn);E.bind(el, 'click', fn, data);// remove event : E.unbind(el, 'click', fn);E.unbind(el, 'click.name');E.unbind(el, 'click');E.unbin 阅读全文

posted @ 2011-08-18 18:23 snandy 阅读(2034) 评论(3) 推荐(3) 编辑

事件模块的演变(9)
摘要:增加了批量添加事件E.on(el, { click : { handler : once : delay : scope : stopEvent : preventDefault : stopPropagation : }, mouseover : {}, mouseout : {}});数据结构:event-0.6.js 阅读全文

posted @ 2011-08-12 10:18 snandy 阅读(2699) 评论(0) 推荐(0) 编辑

读jQuery之十三
摘要:最近看完了添加事件和删除事件的核心方法,忍不住想把jQuery的事件模块抠出来。jQuery的代码是非常内聚的,一环套一环。想独立出来不容易。jQuery的事件模块严重依赖于其数据储存(jQuery.data),你会发现我的代码中的dataManager对象对应它。这里只提供bind和unbind方法。暂不包含事件命名空间(event namespace)事件代理(event delegation)特殊事件如dom ready接口如下:E.bind(el, 'click', fn); E.bind(el, 'click', fn, data);E.unbind( 阅读全文

posted @ 2011-08-11 11:41 snandy 阅读(2054) 评论(1) 推荐(0) 编辑

主动派发事件总结
摘要:有时需要模仿用户的一些动作(鼠标/键盘操作),最常见的莫过于鼠标点击。一一列举1,dispatchEvent()这是标准的触发事件方法,使用时需要先创建好事件对象。如下var evt = document.createEvent('Event');evt.initEvent('click',true,true);element.dispatchEvent(evt);2,fireEvent()这是IE旧版本中实现的触发事件方法,它无须创建事件对象,直接使用。如下element.fireEvent('onclick');注意:与attachEvent 阅读全文

posted @ 2011-08-07 09:27 snandy 阅读(2863) 评论(1) 推荐(4) 编辑

模拟元素点击的几种方式
摘要:最简单的莫过于使用click方法<input id="btn" type="button" value="BUTTON" onclick="alert(1)"/><script> var btn = document.getElementById('btn'); btn.click();</script>所有浏览器都弹出了1。把input换成div呢<div id="d1" style="background:gold;widt 阅读全文

posted @ 2011-08-02 06:52 snandy 阅读(40564) 评论(18) 推荐(12) 编辑

自定义事件(Custom event)
摘要:前面用了8篇回顾浏览器中内置事件,且写出了一个基本完整,功能还算强大的事件模块。如果您愿意,还可以继续添加一些功能如事件代理、一次性添加多个事件、和选择器结合一次性为多个元素添加事件。当然这些都不是必须的,可根据需求自行扩展。这篇开始看看自定义事件,自定义事件有许多应用场景。实际上它实现了“观察者模式”。使用过google(或灵图)地图API的同学应该知道地图有个缩放事件zoom,即地图放大或缩小的时候触发。这个zoom就是自定义事件。感兴趣的可以点击此处看看。自定义事件并不深奥,几行代码就可以实现一个var obj = {};obj['click'] = function() 阅读全文

posted @ 2011-05-30 09:10 snandy 阅读(4891) 评论(1) 推荐(2) 编辑

事件模块的演变(8)
摘要:这篇为其增加几个功能1,延迟handler的执行2,handler可指定执行上下文,即有时可能需要handler内this不是HTMLElement3,停止事件冒泡和阻止默认行为4,阻止元素默认行为5,停止事件冒泡为此,将添加事件函数on的接口做了修改。第四个参数是个对象,分别可指定以下参数E.on(el, 'click', fn, { once : // true则该handler仅执行一次 delay : // handler延迟执行的时间,以毫秒为单位 scope : // handler执行上下文,默认为el stopEvent : // 阻止el默认行为,停止冒泡 p 阅读全文

posted @ 2011-05-28 18:33 snandy 阅读(1746) 评论(4) 推荐(2) 编辑

事件模块的演变(7)
摘要:现有的事件管理都挂放在HTMLElement上的,即每个element有个events属性,该属性可以当成个hash对象。里面存储这该element的所有事件及事件handler。比如给element添加了click/mouseover/mouseout 三个事件,响应函数分别是f1/f2/f3。events的结构如下每一个events['click'] 是一个数组,即存放多个handler。给element的click事件添加3个事件handler,其结构如下往HTMLElement上添加了一个对象,该对象中存放了许多事件handler,可能会存在内存泄露的问题尤其在IE6中 阅读全文

posted @ 2011-05-27 14:54 snandy 阅读(1283) 评论(3) 推荐(0) 编辑

事件模块的演变(6)
摘要:基于“勿重复判断浏览器”的原则,将添加/删除/触发事件的三个分支重写。如下var w3c = !!window.addEventListener, addListener = w3c ? function(el, type, fn) { el.addEventListener(type, fn, false); } : function(el, type, fn) { el.attachEvent('on' + type, fn); }, removeListener = w3c ? function(el, type, fn) { el.removeEventListener 阅读全文

posted @ 2011-05-26 15:05 snandy 阅读(1507) 评论(0) 推荐(1) 编辑

事件模块的演变(5)
摘要:上一篇正式推出了我的事件模块event-v0.1,已经搭起了它的初始框架。或许有人要说,与众多JS库或框架相比,它还没有解决事件对象的兼容性问题。是的,我故意将此放到后续补充。因为事件对象的兼容性问题太多了,太繁琐了。这篇我将引入一个私有的_fixEvent函数,add中将调用该函数。_fixEvent将修复(或称包装)原生事件对象,返回一个标准的统一接口的事件对象。如下function _fixEvent( evt, el ) { var props = "altKey attrChange attrName bubbles button cancelable charCode c 阅读全文

posted @ 2011-04-09 12:00 snandy 阅读(1719) 评论(0) 推荐(2) 编辑

1 2 下一页
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示