viewer看图插件在PC端网页版即时聊天中的应用

    手里有一个网页版即时聊天项目在维护,原来查看图片,是使用打开链接的方式查看,可操作性弱,用户体验比较不舒服。

后来经专业的前端的前端小伙伴推荐,用了vimwer插件,感觉很不搓,但是这其中也遇到了一些比较坑的地方。

最开始,引用的是js版本的viewer。

window.showLargeImage= function(imgDiv){
    var viewer = new Viewer(imgDiv, {
      url :'data-original',
      fullscreen:false,//这里是对于插件中的工具的,可以看文档
      toolbar:false
    });
  }

 

然后在每一张图上,绑定了showLargeImag事件,但由此带来的问题是,第一次查看大图时候,需要点击两次,因为第一次点击被用来初始化viewer了,测试小姐姐总是抱怨这个问题,我觉得是小问题本来不想改,但在正式bug单面前不得不屈服,于是......坑来了。

 

最开始我想:我将整个聊天消息框下的所有图片进行一个整的初始化,问题不就解决了么?

var viewer = new Viewer(document.getElementById('msgDiv'), {
    url: 'data-original'
});

这么做带来了两个问题:

(1)头像也是图片,而点击头像的话,需要进入个人详情页,初始化之后,点击头像就成了进入详情跟大图查看模式同时进行。

(2)聊天新发出的图片,就不能被正常大图显示了,因为这个新来的图片,没有被初始化到viewer中

第一个问题好解决。给头像的父元素,a标签,添加一个事件

$(".headimg").click(function(event) {
  return false;
}); 

禁止其子元素点击事件。

第二个问题就有点坑了,因为我不是专业前端,后端java一只,所以花了些功夫。在解决问题途中,我将js版的viewer换成了jq版的

  function showImg(){
    $('#msgDiv').viewer( 
     {url :'data-original',
     fullscreen:false,
     toolbar:false,
     navbar:false,
     keyboard:false
     });
   }
 showImg();

这种写法是我比较熟悉的额,定义一个function,然后到处去调用这个,哈哈,在java里面这个思想叫封装对吧。

但是这个依然不能解决第一张图片加入不了初始化的问题。

针对这个,我又扒了扒资料,写了这么段代码

 function updateImg(){
    $("#msgDiv").viewer('update');  
  }

这是我犯得比较大的傻了,因为如果你的聊天对象第一次发图片的话,因为聊天框里面,并没有图片,所以,updateImg会失败的,这个时候,图片点击无效。

得益于jq选择器的便利,我将每一张图,打上类名 img-msg

$("#msgDiv")换成$(".img-msg")
  function showImg(){
    $('.img-msg').viewer( 
     {url :'data-original',
     fullscreen:false,
     toolbar:false,
     navbar:false,
     title:false,
     keyboard:false
     });
   }
showImg();
 

 

function updateImg(){
    $("#msgDiv").viewer('update');  
  }

在需要看大图的地方,调用updateImg,这样可以解决看初次发图片时候,点击无效问题,但最终又产生了一个最后的小问题,那就是最新发送的图片,预览时候没有显示我想要的大图,我的img标签里,src放的是小图地址,data-original 放的是大图地址。求助前端老员工,陪我断点了半天viewer底层代码,最终发现,,,,坑出在updateImg里面有木有啊!!!

这里我写的updateImg完全就是画蛇添足了,我为每个新加入的图片绑定了οnlοad="updateImg()";这里更新的时候,并没有带上data-original值,所以说,viewer根本获取不到大图地址,于是就打开了小图。

最终删掉updateImg方法,在新加入的图片上直接绑定showImg,嗯,问题解决。

额,因为之前技能点都点在java上,js比较薄弱,以上内容,有什么谬误,希望能有大神来指正,谢谢观看。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebIM说明 WebIM是一款基于jQuery的一款web即时通讯插件,姑且这么称呼吧。插件最大程度实现了IM的常用功能,除即时通讯的常用功能外,还加入了:消息盒子、窗口抖动、添加删除好友、最近联系人、超时登录界面、网站小秘书、聊天记录、发送频率限制、发送产品、发送名片、发送表情、产品分享、黑名单、举报、收藏、公告、智能网址过滤、消息提醒、修改资料、名片二维码、禁止粘贴、收起联系人列表、推荐好友等30余项改进。全浏览器兼容。 插件调用简单方便,只需在现有的web系统加入几行代码,理论上可嵌入任何web系统。 2012年项目,已不再维护。 配置 $(function() { $(document).FnWebIM({ autoLogin :true, //boolean型,默认是否自动登录,true:自动登录,false:手动登录,默认为true msgRefreshTime :1000, //number型,消息刷新时间,单位为ms friendRefreshTime :10000, //number型,好友刷新时间,单位为ms showSecretary :true, //boolean型,默认是否显示小秘书,true:显示,false:不显示,默认为true noticeContent :"唐僧师徒历经千辛万苦,终于见到了佛祖……", //string型,公告内容 为空时不显示公告 sendPicture :true, //boolean型,是否允许发送图片,true:允许,false:不允许,默认为true msgMaxSize :300, //number型,单条消息最大允许字符 msgSound :false, //boolean型,是否开启声音提醒,true:开启,false:关闭,默认为true defaultWindow :"" //string型,登录后打开新聊天窗口,此处接收的参数为联系人的uid,否则会出错 }); }); 详细说明文档 http://www.zi-han.net/case/im/help.html 示例 http://www.zi-han.net/developer/721.html 注意 请在服务器(如localhost)环境下打开

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值