浏览 3943 次
锁定老帖子 主题:jQuery 自己改造
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-05
在使用jQuery的过程中,发现一些地方在自己的应用上出问题. 查来查去,发现问题可能出自jQuery的代码上.以前也曾经发现过jQuery的bug,不过自己英文不好,不能用英文表达出来提交bug.那就先自己自足吧. 注意:这些bug是否是真的bug还有待考证
jQuery 1.2.6版
所在:$.httpData BUG语句:if ( xml && data.documentElement.tagName == "parsererror" ) 修正:if ( xml && null==data.firstChild) 原因:浏览器兼容性问题,data.documentElement不一定存在,当然后面的也就不对了,虽然整体看还是会正确执行,但是不够严谨
所在: $.fx.step._default BUG语句: fx.elem.style[ fx.prop ] = fx.now + fx.unit; 增加: if (fx.now<0 && fx.prop.search(/width|height/i)>=0) fx.now=0; 原因:有些插件,比如LavaLamp,会令 now < 0为负值,应该是LavaLamp的BUG,不过在这里处理的话,就一了百了了.
所在: $.browser 语句: 增加一个属性以方便switch($.browser.is)结构的操作 增加: is:(userAgent.match(/.*(webkit|opera|msie|firefox|mozilla)/) || [])[1] 原因: 适应了switch语法 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-12
楼主很牛,支持楼主,不过楼主果然不厚道。。。
英不好不去提交bug就算了 连中文的帖子里也没表述一下是什么bug并且如何重现bug。。。。 我们哪敢拿来用啊…… |
|
返回顶楼 | |
发表时间:2008-07-12
shawphy 写道
楼主很牛,支持楼主,不过楼主果然不厚道。。。
英不好不去提交bug就算了 连中文的帖子里也没表述一下是什么bug并且如何重现bug。。。。 我们哪敢拿来用啊……
我汗,我改改 |
|
返回顶楼 | |
发表时间:2008-07-14
我仅针对第三条吧,前两条不熟悉……
第三条想法不错,只是不知道这种写法是否牢靠,通常userAgent属性很乱。 要switch浏览器的话,尝试使用 switch(true){ case jQuery.browser.msie: case jQuery.browser.safari: case jQuery.browser.opera: case jQuery.browser.mozilla: } 但不知道执行效率跟楼主的比起来哪个更高~~ |
|
返回顶楼 | |
发表时间:2008-07-14
LS的这个用法我第一次见,学习了,
通常userAgent属性很乱,这个说法........,jQuery也是这么用的,我只不过是换了个组合方式而已, 到底哪个效率更高,反正都是switch,差异应该不大, 不过你的switch的字符个数多呀,jQuery.browser.重复了多次,敲键次数多呀. 我那样写的目的也就是少敲了几下键盘. switch(jQuery.browser.is){ case 'msie': case 'safari': case 'opera': case 'mozilla': } |
|
返回顶楼 | |
发表时间:2008-07-16
呵呵,确实蛮有道理的,明显是代码量少了很多!
我关心的效率是正则匹配的次数,用我的可能是匹配4次,而用你的也许只匹配一次。 但我不是很确定js里的select语句的执行过程…… 我去看了一下源码,发现楼主确实将jQuery内部的正则总结的很好 唯一有点纰漏的就是最后的Mozilla可能存在潜在的不确定性。 如果某个浏览器其存在compatible这个字符串并且存在Mozilla,楼主的代码将其识别为Mozilla,而jq却不会。 不过我不得不承认其实是多虑了,目前常见的4大内核的已然都能搞定了,那个边边角角的,忽略也罢~~ |
|
返回顶楼 | |