论坛首页 Web前端技术论坛

jQuery 自己改造

浏览 3942 次
精华帖 (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语法

   发表时间:2008-07-12  
楼主很牛,支持楼主,不过楼主果然不厚道。。。
英不好不去提交bug就算了
连中文的帖子里也没表述一下是什么bug并且如何重现bug。。。。
我们哪敢拿来用啊……
0 请登录后投票
   发表时间:2008-07-12  
shawphy 写道
楼主很牛,支持楼主,不过楼主果然不厚道。。。
英不好不去提交bug就算了
连中文的帖子里也没表述一下是什么bug并且如何重现bug。。。。
我们哪敢拿来用啊……

 

我汗,我改改

0 请登录后投票
   发表时间:2008-07-14  
我仅针对第三条吧,前两条不熟悉……

第三条想法不错,只是不知道这种写法是否牢靠,通常userAgent属性很乱。
要switch浏览器的话,尝试使用
switch(true){
case jQuery.browser.msie:
case jQuery.browser.safari:
case jQuery.browser.opera:
case jQuery.browser.mozilla:
}
但不知道执行效率跟楼主的比起来哪个更高~~
0 请登录后投票
   发表时间:2008-07-14  
LS的这个用法我第一次见,学习了,
通常userAgent属性很乱,这个说法........,jQuery也是这么用的,我只不过是换了个组合方式而已,
到底哪个效率更高,反正都是switch,差异应该不大,
不过你的switch的字符个数多呀,jQuery.browser.重复了多次,敲键次数多呀.
我那样写的目的也就是少敲了几下键盘.
switch(jQuery.browser.is){
case 'msie':
case 'safari':
case 'opera':
case 'mozilla':
}
0 请登录后投票
   发表时间:2008-07-16  
呵呵,确实蛮有道理的,明显是代码量少了很多!
我关心的效率是正则匹配的次数,用我的可能是匹配4次,而用你的也许只匹配一次。
但我不是很确定js里的select语句的执行过程……

我去看了一下源码,发现楼主确实将jQuery内部的正则总结的很好
唯一有点纰漏的就是最后的Mozilla可能存在潜在的不确定性。
如果某个浏览器其存在compatible这个字符串并且存在Mozilla,楼主的代码将其识别为Mozilla,而jq却不会。
不过我不得不承认其实是多虑了,目前常见的4大内核的已然都能搞定了,那个边边角角的,忽略也罢~~
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics