jQuery源码阅读(四):jQuery Callback的bug

Author : lovecicy

这两天在看jQuery Callback API的代码,无意中发现了一个jQuery的bug,这个bug存在在目前所有的主流版本中,除了最初引进Callback API的1.7版本,从1.8到2.1,都存在。 先来说说这是一个怎么样的bug,看下面的代码: 在jQuery的文档中是这么描述disable()方法的: Disable a callback list from doing anything more 因此,执行disable()方法后,对这个Callback对象的所有操作都应该被禁止了。但是如果在调用disable()之前,没有调用fire(),那么通过调用empty()方法,我们可以重新添加callback函数,然后成功调用fire()方法。之后,虽然add方法可以再次被调用,但是无法再成功调用fire()方法。 我们可以直接从代码入手,看看这个问题的原因: 当我们调用fire()的时候,在内部实际上是在调用fireWith()方法。而fireWith()能被成功调用的前提是list存在,并且fired为false或stack存在。而disable()被调用以后,list[Read More]

standard

IE BUG相关文章集合

Author : lovecicy

虽然IE6是前端人员的噩梦,但是在中国,还是很多前端必须面对的一道坎,最近从小道消息看到说IE6在中国的市场份额已经跌到20%了,不知道是不是真事,希望IE6能加速在中国的下滑吧。 不止IE6,即使IE7 ,IE8都有很多不符合规范的地方和Bug,在这里转了一篇前端观察的关于IE Bug的集合,希望可以帮助遇到IE Bug的同学。 Haslayout IE Haslayout 详解 haslayout “HasLayout” Overview 你了解IE的haslayout(拥有布局)吗? 详说 IE hasLayout   Block formatting contexts Block formatting Block Formatting Contexts(块级格式化上下文) 详说 Block Formatting Contexts (块级格式化上下文)   IE bug The CSS Box Model css盒子模型(box model) margin加倍bug 3px bug 文字溢出bug(注释bug) IE下图片空隙BUG CSS背景图片重复加载BU[Read More]

standard

IE scrollbar bug

Author : lovecicy

最近在做一个auto-complete的功能,需要在输入框输入字符后可以自动查询,将结果做成下拉列表显示在输入框下面,结果碰到了一个问题。当搜索结果太多,需要用在搜索结果里加滚动条时,在IE下会有bug。 具体情况是这样的,当输入框失去焦点时,需要触发blur事件,隐藏搜索结果。但是当点击滚动条时,会触发IE的blur事件,于是搜索结果会被隐藏,这样就出现了滚动条无法使用的状况。 在参考了网上的解决方法后,修改了代码,具体思路是这样的: 首先为搜索结果绑定blur事件方法。然后对搜索结果添加mousedown事件,当鼠标点下时,判断event.target是否为搜索结果(ul)的一个item(li),如果是则将选中的搜索结果添加到输入框,并将blur事件方法绑定到输入框;如果为否,则unbind输入框的blur事件,并停止冒泡。再为body绑定一个mousedown事件方法,将blur事件方法bind到输入框并触发。 这样,初始化时就为输入框绑定blur事件方法,当用户点击其他区域时将出发body的mousedown事件,为输入框绑定blur事件方法并触发。当用户点击滚动条时,输入框的[Read More]

standard