一步一步搭建客服系統 (3) js 實現“截圖粘貼”及“生成網頁縮略圖”


 

最近在做一個客服系統的demo,在聊天過程中,我們經常要發一些圖片,而且需要用其它工具截圖后,直接在聊天窗口里粘貼,就可以發送;另外用戶輸入一個網址后,把這個網址先轉到可以直接點擊的link,並馬上顯示這個網址的縮略圖。

1 截屏粘貼

1.1 用clipboardData來實現截屏粘貼

 

 


 

1.2 firefox 不支持clipboardData

用上面的方法一般瀏覽器都支持,但firefox就是不支持,后來才發現,它支持直接粘貼截屏的圖片到div里(textarea里不行)。於是把發送消息的框由textarea改成了div。

1.3 取值

用jquery取textarea的值,我們用的是val,但div我們用val是取不到值的。雖然我們可以用html來取到所有內容,但對於文本來說用text取到的值更簡潔;只有要取截屏圖片時,才用html,於是寫成這樣:

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

 

1.4 效果圖

image

 

作者:瘋吻IT 出處:http://fengwenit.cnblogs.com

 

2 根據網址生成縮略圖

2.1 效果圖

當用戶輸入 http://qq.com 時, 自動轉成link,並生成一個小的縮略圖,效果如下:

image

 

2.2 實現

先判斷是不是link, 如果是link,就生成一個iframe:

 

初始設置iframe的寬、高為1000,最開始是不可見的,因為加載完后,要縮小到45%,所以一開始就可見的話,界面會閃一下。縮小的方法zoomEle如下:

 

這里最后二行,是設置其可見,並把父控件高度設置成500,不然它為最開始的1000。

 

2.3 細節處理

最開始,為了讓接收到的消息都在最下面,因為消息多了,會有滾動條,所以每收到消息后,會設置收消息的控件div的scrollTop:

 

雖然在上一步,把父控件的高度也設成了500(不是1000了),但整個div的滾動條還是根據1000出現了,所以div的最下面還是會有500px的空白,這時用上面的這種方式,就會在下一個消息前出現一大段空白,感覺很怪。於是調整了下,不滾到底,而是根據滾動到最后的一個消息處:


這里要區分有沒有iframe, 另外普通的消息是用的div來包了一層。

 

另外如果不想讓這個縮略圖里的link能被點擊,可以在iframe里加上sandbox屬性,這樣就不會在點擊后打開新的網頁了。

 

另外,在網上找到了一個生成當前網頁縮略圖的方法,感覺還不錯,分享一下:


調用 generate() 方法即可生成。

 

 一步一步搭建客服系統

 

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM