Ext界面做图片动态加载的图片放大镜效果并解决JS内存泄漏问题

NOTICE:你能看懂全文的话,你就会做了,是真正的会,不是拿来主义!

to be continue……

 

 

目的:做个仿照淘宝的图片放大镜!图片是根据选择的记录动态加载的,而不是单纯静态图放大镜效果!

 

过程:是曲折的!搜索了如何做,如何处理图片,然后尝试了N个JQuery插件,均没有理想的效果。最后得了一个比较理想的具有OO思想的JS(qsoft.PopBigImage.v0.35.js)。

 

认识:图片放大的算法,是不变的。变化的是显示放大图片的形式:在原图左or右?上or下?漂浮or内嵌?结合EXTor不用框架?

 

方法:使用qsoft.PopBigImage.v0.35.js(作者kimmking@163.com,是位很好的大牛!昨天抱着试试看的态度,跟这位哥们求助,他居然回复我了,而且回答的很有建议和启发性,向您表示致敬!后面我把您的这个JS改了,但改动还未优化,希望你老人家别见怪,呵呵 by the way,希望我没侵权呀。。。)

 

要求描述:

界面是用Ext,从下部的记录区域里,选择一条记录,把该记录对应的图片放在黄色区域里(Ext.Panel)。

鼠标移动到黄色小图区域里,左侧弹出蓝色的大图区域,鼠标移开,蓝色区域消失。

 

神马,你听不懂?蹲墙角思过去~~~

 

问题难点:

1)点击查询出来的记录,获取记录的ImgUrl字段值,这是easy的,ext有很好的获取方法。

 

2)然后在选择记录的事件里,完成黄色区域的图片绑定、蓝色区域的图片对象预加载功能(图片很大,先获取图片的大小给蓝色区域的mask用。为啥获取这两个参数给mask用?这个主要是看了qsoft的处理思路想到的。。。。一切为了速度吧!mask是啥?我也不懂~~~,JS只是拿来主义,翻书。。。。哈哈)。

PS:黄色区域是个<img id="smallPic" .../>,EXT的,希望你能看懂~~

绑定的时候,只需要在点击选择记录的事件里添加上src的绑定就可以了。

document.getElementById("smallPic").src = rowArray[rowArray.length-1].get('picURL');

黄色区域是有图片了,但是,但是,蓝色区域却没有对象呀。。。

很多人的做法是:黄色区域是个小图,蓝色区域是个大图,两张图片,gameover!

我这里就不行了,我这里黄色区域的图片是根据选择的记录动态加载的、蓝色区域的图片是获取黄色区域的图片(关键:大图小图皆一张图no 大图小图),它们的mother一样,那他俩怎么一个黄一个蓝?纠结。。。OMG

 

幸好发现了qsoft.PopBigImage,它给我带来了福音,于是我的点击记录事件的方法这样写的(好吧,贴代码):

 

但也带来了新的问题,to be continue……

 

3)选择记录,黄色区域显示图片了。于是鼠标移动到黄色区域,这个就有onmouseover事件了。

细心看的话,我没有在smallPic上添加onmouseover事件!

qsoft里面已经实现了,作者同学,你自己写的代码很犀利很神呀!哈哈哈哈 

onmouseover事件触发了放大镜效果,主要完成:放大区域显示、放大区域图片显示、放大区域与黄色原图区域的对应。(详见提到N遍的这个JS吧)

静态图时,qsoft实现了三个中的三个。这也是我用她的原因,不想去了解什么JQueryZoom/XXXZoom那些插件!!

这里,是动态加载的图,qsoft实现不了放大区域的图片加载!悲呼~~于是email作者,作者说今天晚上给搞搞,今天晚上你在搞这个问题吗?忙一天了,别搞了,我下午搞出来了,忘记给你说了,我太不厚道了,,,只因太忙,都是公司逼的!中间10086MM来电又搞了很久,OMG匆忙的一天过去了~~~

 

贴代码吧,你能读懂,你就来读,反正是对的,但可以优化,太晚了,忙。。。困。。。。有空再优化吧

 

 

还有一个内存泄漏问题,就是每次选择一条记录时,内存会增加5M!使用JQueryZoom的,客户会因为机子慢骂人的。。。还是慎用吧!作者也来想想怎么改善吧,反正qsoft.PopBigImage.v0.35.js的作者爽了,这里已经给你解决了,还有,很赞你这个JS,内存泄漏不是你这个JS惹的祸,是我们使用时用的不恰当造成的!请看那个注释:。。。。//这个很神。。。。

 

改进的版本,命名为qsoft.PopBigImage.v1.1.js吧,毕竟改了不少的说。。。。。

牛顿说站在巨人的肩膀上,看的更远!

这里站在kimmking@163.com的肩膀上,学会了很多,3Q

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值