Visual Event :快速查看 DOM 上绑定的 JS 事件
http://web.jobbole.com/82503/
Javascript中的事件经常被认为如谜一般不可解。Javascript是一个事件驱动的语言,在这样的前提下前面的看法是很奇怪,但是说到它们的复杂本质和调试难度时,这样的看法又是很正常的。为此,我创建了可视化事件(Visual Event)来查看DOM节点上绑定的事件。
简介
Visual Event是一个开源 Javascript 书签,能提供绑定在DOM元素上的事件调试信息。Visual Event能显示如下信息:
1、哪一个元素有事件绑定
2、某元素上绑定的事件类型
3、事件触发后运行的代码段
4、定义绑定函数的源文件和行号(仅限于WebKit和Opera浏览器)
除了对调试你自己的代码大有用途,Visual Event还能被用作教学工具,显示发起了多少网站。
Visual Event是开源软件(GPLv2),并且在GitHub上有一个Git仓库目录,供你去提交或照你所想的去修改
安装
由于Visual Event是一个小书签,所以在任何网页上安装和运行它都很简单:
1、拖拽右侧的“Visual Event”链接到你的书签栏上:Visual Event
2、载入一个使用了浏览器所能支持的js库的网页
3、点击书签栏中的“Visual Event”
4、查看绑定在文档元素上的事件处理器
自动载入的Visual Event例子在这里有提供。这个例子使用Data Tables创建了一个不同元素上绑定了许多事件的测试页面。
它是如何工作的
W3C 没有提供标准的方法推荐能发现特定元素上绑定事件的DOM接口。尽管这似乎是个疏忽,也有一个建议方法能将3级DOM规范的 eventListenerList 属性包含进来,但很不幸的是,在后来的草案中这个方法被移除了。因此,我们不得不研究独立的通常能维护一个事件的高速缓存的Javascript库(所以它们能在后来被移除并执行其他有用的抽象化)。
因此,Visual Event为了能显示事件,它必须能够从 JS 库中解析出事件信息。目前Visual Event能支持的库有如下这些:
- DOM 0 events
- jQuery 1.2+
- YUI 2
- MooTools 1.2+
- Prototype 1.6+
- Glow
- ExtJS 4.0.x
如何参与
Visual Event是个开源软件,在GPLv2证书下可以获得。通过Git实现开源控制,而且该项目在GitHub 上有一个网页。事实上任何对Visual Event的提高有帮助的建议都是十分受欢迎的!如果你遇到什么问题,请在 GitHub上将你遇到的问题作为讨论(issue)展开,包括出现问题的网页链接地址。Fork代码以及合并分支(pull request)也同样被鼓励!
你可能有一个很感兴趣的地方,就是如何能添加对额外Javascript库的支持。关键是能够获取到该库使用的事件缓存,因为没有事件缓存就不可能知道哪个节点有事件以及绑定代码。
VisualEvent类有一个静态数组叫做“VisualEvent.parsers”,它是一个函数的数组——想增加一个新的解析器,只需要将你的函数加到这个数组里。这个函数必须返回一个带有以下参数的javascript对象数组:
JavaScript
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[
{
"node": {element}, // The DOM element that has attached events
"listeners": [ // Array of attached events
{
"type": {string}, // The event type - click, change, keyup etc
"func": {string}, // The code that will handle the event, from Function.toString()
"removed": {boolean}, // If the event has been removed or not (typically will be false, but used if the library doesn't remove the event from its cache)
"source": {string} // Library name and version that attached the event (e.g. "jQuery 1.7")
},
...
]
},
...
]
|
建立Visual Event
为了能运行本地的Visual Event副本,你必须先建立一个Visual Event,因为这个过程会有文件级联操作,即将库中的解析器移动到主文件中。建立的过程中还同时会建立 JSDoc文 档并压缩 JS 文件(除非是调试生成的)。
为了建立Visual Event,你在终端只需要一个能运行bash脚本并能输入“./build .sh debug”命令的系统。这会在建立Visual Event和正确的载入器的目录中的“builds”目录里创建一个新目录(注意时间戳是用于防止开发和部署过程中boolmarklet的缓存问题)。以下是建立过程的脚本的使用实例:
JavaScript
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Visual Event build script - usage:
./build.sh [loader-dir] [debug]
loader-dir - The web-address of the build files. Note that the build
directory name is automatically appended. For example:
localhost/VisualEvent/builds - default if no option is provided
sprymedia.co.uk/VisualEvent/builds
debug - Debug indicator. Will not compress the Javascript
Example deploy build:
./build.sh sprymedia.co.uk/VisualEvent/builds
Example debug build:
./build.sh localhost/VisualEvent/builds debug
|
文件“bookmarklet.html”是为了使你能方便地建立你自己的书签载入器。通常你只需要修改书签的路径地址。链接会在每次按键时更新,你只需要像你安装其他书签插件一样去安装它。
Visual Event :快速查看 DOM 上绑定的 JS 事件的更多相关文章
- 浏览器中开发人员工具快速找到dom元素绑定那些JS事件
在web开发过程中难免会遇到让程序员去修改一些js代码东西,例如js的ajax和php等语言的交互等,在这其中你不得不了解点js的事件触发,且随着js的盛行各种插件的事件让程序员眼花缭乱,所以借助一个 ...
- Visual Event插件----查看html元素绑定的事件与方法的利器
WEB标准提倡结构.表现和行为相 分离,现在越来越多采用这种表现和行为的方式,但它也为我们开发调试带来一些问题,网页载入一堆JavaScript,,我们很难搞清楚最后在哪些元素的哪个动作绑定了事件,尤 ...
- Jquery 查看DOM上绑定的事件列表
$(dom).data( "events" ); 包括事件类型和关联的处理函数 下面是firefox的截图
- Chrome插件Visual Event查看Dom元素绑定事件的利器
找这工具找了好久,统一找着了,开发人员不可多得的好东东,收藏做一下分享. 用Chrome插件Visual Event查看Dom绑定的事件 Visual Event简介 Visual Event是一个开 ...
- 一个DOM元素绑定多个事件时,先执行冒泡还是捕获
绑定在被点击元素的事件是按照代码顺序发生,其他元素通过冒泡或者捕获“感知”的事件,按照W3C的标准,先发生捕获事件,后发生冒泡事件.所有事件的顺序是:其他元素捕获阶段事件 -> 本元素代码顺序事 ...
- The Node.js Event Loop, Timers, and process.nextTick() Node.js事件循环,定时器和process.nextTick()
个人翻译 原文:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/ The Node.js Event Loop, Ti ...
- Day04 dom详解及js事件
day04 dom详解 DOM的基础 Document对象 Element对象 Node对象 innerHTML 事件处理 表单验证 上次课内容回顾: JS中ECMAScript用法: JS定义变 ...
- jquery动态生成dom(比如append)导致js事件无效
如果无效用这个方法: on() 方法在被选元素及子元素上添加一个或多个事件处理程序. <div id="zkdiv"> <input type="bu ...
- vue中一个dom元素可以绑定多个事件?
其实这个问题有多个解决方法的 这里提出两点 第一种 第二种 现在dom上绑定一个 然后在你的methods中直接调用 如果要传参数 这时候千万别忘记 原创 如需转载注明出处 谢谢
随机推荐
- OAF Sample Code(转)
原文地址: OAF Sample Code
- JavaScript 运行机制详解:Event Loop——续
转自:http://www.ruanyifeng.com/blog/2014/10/event-loop.html 五.定时器 除了放置异步任务的事件,"任务队列"还可以放置定时事 ...
- UVALIve 5987 素数
题目链接:Distinct Primes 如果一个数.至少有三个因子是素数..那么这个数就是prime num.30和42是前两个prime num.问你第n个这种数是谁.(1<=n<=1 ...
- C#中使用Spire.docx操作Word文档
使用docx一段时间之后,一些地方还是不方便,然后就尝试寻找一种更加简便的方法. 之前有尝试过使用Npoi操作word表格,但是太烦人了,随后放弃,然后发现免费版本的spire不错,并且在莫种程度上比 ...
- maven 构建war包时排除web.xml
在使用maven构建项目的war包时,有时并不需要src/webapp/WEB-INF/下的一些文件. 这时可以通过maven-war-plugin创建配置来排除这些文件.下面贴出我平时使用的pom. ...
- 第三视角团队:"Jarvis For Chat"团队选题报告
"Jarvis For Chat"团队选题报告 组长博客链接 本次作业链接 NABCD在项目中的使用 N(Need,需求) QQ和微信已经成为人们社交的必需品,在QQ有7.8亿活跃 ...
- L1-018 大笨钟
微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那 ...
- button确定取消事件
对于前端这边,我们往往有这样的需求,即触发某一事件后(例如单击事件)想要根据用户的主管选择来进行下一个操作,例如停止监控事件,往往希望点击提示中的“确定”按钮再真正的去停止,否则不会,一般会用到Dia ...
- 目录遍历漏洞简介 转载于h3c
参考文章: 攻防:目录遍历漏洞简介
- UIView.animateWithDuration 没有动画过渡效果直接跳到最后
当我在viewDidLoad()方法内添加以下代码的时候发现程序运行时不会有动画过度效果,而是直接跳到了最后. let x = (self.view.bounds.size.width - 268) ...