JQuery的图片延迟加载的提醒
以前没写过我做网站的事儿,这次就顺便说说。第一次做网站,是为南京ComicJehad做,为南京动漫爱好者和动漫产品生产商提供服务。给2800,当时觉得还挺多的,第一次,没经验,以为挺简单一个网站。后来发现网站的逻辑真心不简单,问题也很多。
我和室友圣圣在2012年的夏天完成了第一版(我debug的时候某人竟然在dota!)。那一版能用,但问题很多,经不起考验,安全性几乎没有。以至于我到了瑞典花天酒地还要惦记着远程给这个网站debug。我去当时真是什么奇葩的bug都有。
最近那个老板又说要改一些地方,我果断开口2000,圣圣却主张500,最后弄成1000,玛达你做那么个小东西人家就给了1800,这个能不多要点儿?算了,就当锻炼了。不过说起来这次无非是改改标签,调整下按钮的位置,但觉得收那么些钱改的太少还是不地道,于是我准备对本子信息这个我忍了很久的页面动刀。
它的问题在于load这个页面需要加载很多图片,尽管我限制了上传图片的大小,但是数量一多,加载起来就巨慢。根本无法滚动页面,直到等几十秒,我这么温柔的人都受不了,更不要说用户这么暴躁的物种了。要么分页,要么延迟加载,最后我选了比较酷的延迟加载。
我参考了这个人的博客,看了他的demo还不错,测试基本覆盖了主流浏览器。然后开始修改我的代码。试了一下,只能加载前面两行的图,也就是第一个页面看的见的图,后面不管你怎么滚动也加载不了。坑爹呢吧,于是我开始看他插件的源码,写的倒是挺不错的,可惜我对JQuery了解不多,属于那种遇到问题就google的类型,大概看懂他的意思,是说提供了很多的option。比方说默认的使用scroll这个event,就将它绑定到一个container上面,然后监听container是否被滚动来决定调用update()这个函数。看上去很简单吧,可是折腾了我和敏敏一晚上。主要问题就是这个container是什么东西。
开始我以为是window,然后强制捆绑,但是滚动的时候毛线反应都没有啊,搞毛啊!然后我就去睡觉了。第二天敏敏说我div没对齐,多了一个,我就去各种对齐,代码风格不整洁真是没救了。对其完了发现还是多一个,敏敏在inspector下面看到body标签下面多了一个我从来没写过的div,名叫b,卧槽,真是什么情况。也就说滚动的时候不是滚动的我原来container的div,而是滚动最外面那个叫做b的div?一试,果然是这样,终于成功看到延迟加载了!!
写到这里,貌似已经不是技术贴了,不过就想提醒大家注意,以后用这个插件做延迟加载,一定要搞清楚是scroll了哪一个container。