jQuery lightBox插件的bug解决
时间:
2010-5-09 - 分类:
JavaScript - 评论:
0 -
阅读:
1,123 次
lightBox效果在刚出现的时候引发了一个热潮,但是最开始是基于prototype的,咱一向都用jquery,就用不上了,都用thickbox。后来出了jquery版本的lightbox插件,效果不错,就在项目中用上了。可以点此查看效果:http://www.hxfang.com/action-model-name-newhouse-itemid-13.html
但是在实际使用过程中,发现这个插件还是有些小bug要解决。第一个,IE6,7下会出现影响图片查看的虚线框。
不知道为何,这个bug比较难以重现,lightbox已经通过在css中设定:#lightbox-nav a { outline: none;}来当前激活的链接的虚线边缘,但是在某些情况下还是会出现。最后没办法,自己hack一下。其实去掉虚线框的js代码也很简单,就是让当前元素失去焦点,调用元素的blur事件即可。在lightbox的js代码的280行与300行左右,在其调用点击事件的地方,加入去掉焦点的方法
settings.activeImage = settings.activeImage - 1; _set_image_to_view(); $(this)[0].blur();//让当前元素在点击后失去焦点 return false;
第二个,第一个与最后一个元素的事件处理不当,会触发一些js错误,有些情况下会导致lightbox的半透明边不会消失一直浮动在上层。
激活firebug,到官方的example下面点击它的范例,在最后一个元素再点击下一个的话,就会触发一个js错误:settings.imageArray[settings.activeImage] is undefined。这个js错误有些情况下会导致那个浮动的半透明背景层不会消失,这应该是作者的一个疏忽吧,对于第一个元素跟最后一个元素的触发事件没有更改,导致数组下标越界。修正这个错误也不难,修改第一个与最后一个元素触发事件,改为关闭lightbox。
$('#lightbox-nav-btnNext').unbind()
.bind('click',function() {
_finish();
return false;
});
http://leandrovieira.com/projects/jquery/lightbox/#