栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

关于javascript event flow 的一个bug详解

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于javascript event flow 的一个bug详解

我最近调netsurf也遇到一个相关的bug : alert() 被调了两次。html 代码:

复制代码 代码如下:


alert onclick example




First line of paragraph.






     通过gdb, 定位到是_dom_node_dispatch_event()里面的问题:
复制代码 代码如下:
   for (targetnr = ntargets; targetnr > 0; --targetnr)...


 evt->phase = DOM_BUBBLING_PHASE;

 for (targetnr = 0; targetnr < ntargets; ++targetnr)

 

事件流是这样的: p1(root)-->p2-->... --> pm --> T  (capturing phase), T (target phase), T--> pm --> ... --> p1 (bubbling phase).

规范规定capturing 和bubbling 只能选其一, 代码中在 js_dom_event_add_listener()是选capturing。因此就解释了为什么alert 被执行两回了。

修改: 根据DOM 3 规范,把上面的0改成1就行了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/110209.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号