js剪切板應(yīng)用clipboardData實(shí)例解析
目前僅有高版本的 Chrome 瀏覽器支持這樣直接粘貼,其他瀏覽器目前為止還無法粘貼,不過火狐和ie11瀏覽器在可編輯的div中能夠粘貼截圖的圖片也是base64位和Chrome利用clipboardData的效果是一樣的,只是在火狐和ie11瀏覽器中目前還無法實(shí)現(xiàn)類似用clipboardData直接獲取圖片的base64數(shù)據(jù),它是自帶的直接進(jìn)去img數(shù)據(jù)。
完整實(shí)例:
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>利用clipboardData在網(wǎng)頁中實(shí)現(xiàn)截屏粘貼的功能</title> <style type="text/css"> .box{ width:500px; height:300px; border:1px solid #ddd; } .box img{max-width:480px; max-height: 100%; text-align: center;} </style> </head> <body> <div class="box" contenteditable="true" id="testInput"> </div> <script type="text/javascript"> (function(){ var imgReader = function( item ){ var blob = item.getAsFile(), reader = new FileReader(); reader.onload = function( e ){ var img = new Image(); img.src = e.target.result; console.log(img); document.getElementById('testInput').appendChild( img ); }; reader.readAsDataURL( blob ); }; document.getElementById( 'testInput' ).addEventListener( 'paste', function( e ){ //window.clipboardData.getData("Text") ie下獲取黏貼的內(nèi)容 e.clipboardData.getData("text/plain")火狐谷歌下獲取黏貼的內(nèi)容 //alert(e.clipboardData.getData("text/plain") ) var clipboardData = e.clipboardData,//谷歌 i = 0, items, item, types; console.log('0') if( clipboardData ){ console.log('1') items = clipboardData.items; if( !items ){ console.log(2) return; } console.log(3) item = items[0]; types = clipboardData.types || []; for( ; i < types.length; i++ ){ if( types[i] === 'Files' ){ item = items[i]; break; } } if( item && item.kind === 'file' && item.type.match(/^image\//i) ){ imgReader( item ); } } },false); })(); </script> </script> </body> </html>
實(shí)例二:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="div" style="width:100%;height:700px;border:1px solid #ccc;padding:20px" contenteditable="true"></div> <script> var div = document.getElementById('div'); div.addEventListener('paste', function(e) { if(e.clipboardData) { for(var i = 0; i < e.clipboardData.items.length; i++) { var c = e.clipboardData.items[i]; var f = c.getAsFile(); var reader = new FileReader(); reader.onload = function(e) { div.innerHTML += '<img src="' + e.target.result + '">'; } reader.readAsDataURL(f); } } }); </script> </body> </html>
實(shí)現(xiàn)的方法:
方法一:在Chrome瀏覽器中能夠直接通過clipboardData獲取截圖的圖片數(shù)據(jù),可以用ajax將數(shù)據(jù)傳給后臺(tái),然后由后臺(tái)開發(fā)返回帶域名的圖片地址
方法二:由于在火狐等瀏覽器中無法直接獲取圖片數(shù)據(jù),所以可以在粘貼的時(shí)候獲取div中的img的數(shù)據(jù)是base64的url數(shù)據(jù),然后同方法一用ajax
方法三:可以統(tǒng)一在點(diǎn)擊發(fā)布或者保存消息時(shí),獲取div中的img的數(shù)據(jù)是base64的url數(shù)據(jù),然后同方法一用ajax,如果有多張就循環(huán),也或者是直接點(diǎn)擊保存和發(fā)布的時(shí)候,后端開發(fā)做處理,返回來的顯示信息中直接做處理,這樣我們?cè)赿iv中就不需要把base64的url替換成后端返回的帶域名的地址
方法四:在div中粘貼的時(shí)候彈出一個(gè)彈出層,然后彈出層中有截圖的圖片預(yù)覽可確認(rèn)上傳按鈕,點(diǎn)擊上傳按鈕走ajax上傳圖片同方法一
- Firefox中通過JavaScript復(fù)制數(shù)據(jù)到剪貼板(Copy to Clipboard 跨瀏覽器版)
- 代碼塊高亮可復(fù)制顯示js插件highlight.js+clipboard.js整合
- Vue使用Clipboard.JS在h5頁面中復(fù)制內(nèi)容實(shí)例詳解
- 在vue使用clipboard.js進(jìn)行一鍵復(fù)制文本的實(shí)現(xiàn)示例
- JS基于clipBoard.js插件實(shí)現(xiàn)剪切、復(fù)制、粘貼
- clipboard.js無需Flash無需依賴任何JS庫實(shí)現(xiàn)文本復(fù)制與剪切
- Clipboard.js 無需Flash的JavaScript復(fù)制粘貼庫
- js 剪切板應(yīng)用clipboardData詳細(xì)解析
- JS如何使用剪貼板操作Clipboard API
相關(guān)文章
詳解JavaScript中的鏈?zhǔn)秸{(diào)用
這篇文章主要介紹了JavaScript中的鏈?zhǔn)秸{(diào)用的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下2020-11-11Bootstrap實(shí)現(xiàn)各種進(jìn)度條樣式詳解
本篇文章主要介紹了Bootstrap實(shí)現(xiàn)各種進(jìn)度條樣式詳解 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04JavaScript之事件委托實(shí)例(附原生js和jQuery代碼)
下面小編就為大家?guī)硪黄狫avaScript之事件委托實(shí)例(附原生js和jQuery代碼)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07JavaScript實(shí)現(xiàn)級(jí)聯(lián)菜單的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)級(jí)聯(lián)菜單的方法,涉及javascript頁面元素操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06某頁碼顯示的helper 少量調(diào)整,另附j(luò)s版
某頁碼顯示的helper 已經(jīng)少量調(diào)整,另附j(luò)s版,需要的朋友可以參考下。2010-09-09淺析Javascript中bind()方法的使用與實(shí)現(xiàn)
下面小編就為大家?guī)硪黄獪\析Javascript中bind()方法的使用與實(shí)現(xiàn)。小編覺得挺2016-05-05