一步一步搭建客服系統 (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() 方法便可生成。

 

 一步一步搭建客服系統

 

 

.

相關文章
相關標籤/搜索