一步一步搭建客服系统 (3) js 实现“截图粘贴”及“生成网页缩略图”

 

最近在作一个客服系统的demo,在聊天过程当中,咱们常常要发一些图片,并且须要用其它工具截图后,直接在聊天窗口里粘贴,就能够发送;另外用户输入一个网址后,把这个网址先转到能够直接点击的link,并立刻显示这个网址的缩略图。html

1 截屏粘贴

1.1 用clipboardData来实现截屏粘贴

 

 


 

1.2 firefox 不支持clipboardData

用上面的方法通常浏览器都支持,但firefox就是不支持,后来才发现,它支持直接粘贴截屏的图片到div里(textarea里不行)。因而把发送消息的框由textarea改为了div。node

1.3 取值

用jquery取textarea的值,咱们用的是val,但div咱们用val是取不到值的。虽然咱们能够用html来取到全部内容,但对于文原本说用text取到的值更简洁;只有要取截屏图片时,才用html,因而写成这样:jquery

var msg = $('#text').text().trim() || $('#text').html().trim();web

 

1.4 效果图

image

 

做者:疯吻IT 出处:http://fengwenit.cnblogs.com浏览器

 

2 根据网址生成缩略图

2.1 效果图

当用户输入 http://qq.com 时, 自动转成link,并生成一个小的缩略图,效果以下:app

image

 

2.2 实现

先判断是否是link, 若是是link,就生成一个iframe:dom

 

初始设置iframe的宽、高为1000,最开始是不可见的,由于加载完后,要缩小到45%,因此一开始就可见的话,界面会闪一下。缩小的方法zoomEle以下:工具

 

这里最后二行,是设置其可见,并把父控件高度设置成500,否则它为最开始的1000。post

 

2.3 细节处理

最开始,为了让接收到的消息都在最下面,由于消息多了,会有滚动条,因此每收到消息后,会设置收消息的控件div的scrollTop:this

 

虽然在上一步,把父控件的高度也设成了500(不是1000了),但整个div的滚动条仍是根据1000出现了,因此div的最下面仍是会有500px的空白,这时用上面的这种方式,就会在下一个消息前出现一大段空白,感受很怪。因而调整了下,不滚到底,而是根据滚动到最后的一个消息处:


这里要区分有没有iframe, 另外普通的消息是用的div来包了一层。

 

另外若是不想让这个缩略图里的link能被点击,能够在iframe里加上sandbox属性,这样就不会在点击后打开新的网页了。

 

另外,在网上找到了一个生成当前网页缩略图的方法,感受还不错,分享一下:


调用 generate() 方法便可生成。

 

 一步一步搭建客服系统

 

 

.

相关文章
相关标签/搜索