js剪切板應(yīng)用clipboardData實(shí)例解析
目前僅有高版本的 Chrome 瀏覽器支持這樣直接粘貼,其他瀏覽器目前為止還無(wú)法粘貼,不過(guò)火狐和ie11瀏覽器在可編輯的div中能夠粘貼截圖的圖片也是base64位和Chrome利用clipboardData的效果是一樣的,只是在火狐和ie11瀏覽器中目前還無(wú)法實(shí)現(xiàn)類(lèi)似用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)頁(yè)中實(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瀏覽器中能夠直接通過(guò)clipboardData獲取截圖的圖片數(shù)據(jù),可以用ajax將數(shù)據(jù)傳給后臺(tái),然后由后臺(tái)開(kāi)發(fā)返回帶域名的圖片地址
方法二:由于在火狐等瀏覽器中無(wú)法直接獲取圖片數(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í)候,后端開(kāi)發(fā)做處理,返回來(lái)的顯示信息中直接做處理,這樣我們?cè)赿iv中就不需要把base64的url替換成后端返回的帶域名的地址
方法四:在div中粘貼的時(shí)候彈出一個(gè)彈出層,然后彈出層中有截圖的圖片預(yù)覽可確認(rèn)上傳按鈕,點(diǎn)擊上傳按鈕走ajax上傳圖片同方法一
- Firefox中通過(guò)JavaScript復(fù)制數(shù)據(jù)到剪貼板(Copy to Clipboard 跨瀏覽器版)
- 代碼塊高亮可復(fù)制顯示js插件highlight.js+clipboard.js整合
- Vue使用Clipboard.JS在h5頁(yè)面中復(fù)制內(nèi)容實(shí)例詳解
- 在vue使用clipboard.js進(jìn)行一鍵復(fù)制文本的實(shí)現(xiàn)示例
- JS基于clipBoard.js插件實(shí)現(xiàn)剪切、復(fù)制、粘貼
- clipboard.js無(wú)需Flash無(wú)需依賴(lài)任何JS庫(kù)實(shí)現(xiàn)文本復(fù)制與剪切
- Clipboard.js 無(wú)需Flash的JavaScript復(fù)制粘貼庫(kù)
- js 剪切板應(yīng)用clipboardData詳細(xì)解析
- JS如何使用剪貼板操作Clipboard API
相關(guān)文章
基于el-slider實(shí)現(xiàn)一個(gè)能拖動(dòng)的時(shí)間范圍選擇器
這篇文章主要介紹了基于el-slider實(shí)現(xiàn)一個(gè)能拖動(dòng)的時(shí)間范圍選擇器,并通過(guò)實(shí)例代碼介紹了基于element-ui el-slider實(shí)現(xiàn)滑動(dòng)限位器的方法,需要的朋友可以參考下2024-02-02
javascript DOM對(duì)象的學(xué)習(xí)實(shí)例代碼
javascript DOM對(duì)象的學(xué)習(xí)實(shí)例代碼2009-06-06
解決iframe嵌套第三方網(wǎng)址不能訪問(wèn)的各種報(bào)錯(cuò)
在一些場(chǎng)景下,我們的網(wǎng)站需要通過(guò)iframe標(biāo)簽嵌入第三方廠家的頁(yè)面,這時(shí)候就得通過(guò)iframe標(biāo)簽去引入需要嵌入網(wǎng)頁(yè)的網(wǎng)址了,這篇文章主要給大家介紹了關(guān)于解決iframe嵌套第三方網(wǎng)址不能訪問(wèn)的各種報(bào)錯(cuò),需要的朋友可以參考下2024-09-09
js實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的幾種方法小結(jié)
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的幾種方法小結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-05-05
js實(shí)現(xiàn)購(gòu)物網(wǎng)站商品放大鏡效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)購(gòu)物網(wǎng)站商品放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼
本篇文章主要是對(duì)js判斷ie版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03
bootstrap表單按回車(chē)會(huì)自動(dòng)刷新頁(yè)面的解決辦法
這篇文章主要介紹了bootstrap表單按回車(chē)會(huì)自動(dòng)刷新頁(yè)面的問(wèn)題及解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
微信小程序?qū)崿F(xiàn)倒計(jì)時(shí)調(diào)用相機(jī)自動(dòng)拍照功能
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)倒計(jì)時(shí)調(diào)用相機(jī)自動(dòng)拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06

