欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于js粘貼事件paste簡(jiǎn)單解析以及遇到的坑

 更新時(shí)間:2017年09月07日 08:47:37   作者:蓓蕾心晴  
下面小編就為大家?guī)?lái)一篇基于js粘貼事件paste簡(jiǎn)單解析以及遇到的坑。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在用戶執(zhí)行粘貼操作的時(shí)候,js能夠獲得剪切板的內(nèi)容,本文討論一下這個(gè)問(wèn)題。

目前只有Chrome支持獲取剪切板中的圖片數(shù)據(jù)。還好需要這個(gè)功能的產(chǎn)品目前只支持ChromeSafari,一些Chrome的新特性是可以盡情使用了,還是能夠覆蓋到大部分用戶的。所以本文只討論Chrome如何使用和如何阻止Safari,原理大概了解了,再研究其他瀏覽器相關(guān)的問(wèn)題就容易多了。

paste事件

可以用js給頁(yè)面中的元素綁定paste事件的方法,當(dāng)用戶鼠標(biāo)在該元素上或者該元素處于focus狀態(tài),綁定到paste事件的方法就運(yùn)行了。

綁定的元素不一定是input,普通的div也是可以綁定的,如果是給document綁定了,就相當(dāng)于全局了,任何時(shí)候的粘貼操作都會(huì)觸發(fā)。

事件對(duì)象

獲取事件對(duì)象

先寫(xiě)一下事件綁定的代碼

pasteEle.addEventListener("paste", function (e){
 if ( !(e.clipboardData && e.clipboardData.items) ) {
  return;
 }
});

粘貼事件提供了一個(gè)clipboardData的屬性,如果該屬性有items屬性,那么就可以查看items中是否有圖片類(lèi)型的數(shù)據(jù)了。Chrome有該屬性,Safari沒(méi)有。

clipboardData介紹

介紹一下clipboardData對(duì)象,它實(shí)際上是一個(gè)DataTransfer類(lèi)型的對(duì)象,DataTransfer是拖動(dòng)產(chǎn)生的一個(gè)對(duì)象,但實(shí)際上粘貼事件也是它。

clipboardData的屬性介紹

屬性 類(lèi)型 說(shuō)明
dropEffect String 默認(rèn)是 none
effectAllowed String 默認(rèn)是 uninitialized
files FileList 粘貼操作為空List
items DataTransferItemList 剪切板中的各項(xiàng)數(shù)據(jù)
types Array 剪切板中的數(shù)據(jù)類(lèi)型 該屬性在Safari下比較混亂

items介紹

items是一個(gè)DataTransferItemList對(duì)象,自然里面都是DataTransferItem類(lèi)型的數(shù)據(jù)了。

屬性

items的DataTransferItem有兩個(gè)屬性kind和type

屬性 說(shuō)明
kind 一般為string或者file
type 具體的數(shù)據(jù)類(lèi)型,例如具體是哪種類(lèi)型字符串或者哪種類(lèi)型的文件,即MIME-Type

方法

方法 參數(shù) 說(shuō)明
getAsFile 如果kindfile,可以用該方法獲取到文件
getAsString 回調(diào)函數(shù) 如果kindstring,可以用該方法獲取到字符串,字符串需要用回調(diào)函數(shù)得到,回調(diào)函數(shù)的第一個(gè)參數(shù)就是剪切板中的字符串

在原型上還有一些其他方法,不過(guò)在處理剪切板操作的時(shí)候一般用不到了。

types介紹

一般types中常見(jiàn)的值有

text/plain、text/html、Files
說(shuō)明
text/plain 普通字符串
text/html 帶有樣式的html
Files 文件(例如剪切板中的數(shù)據(jù))

簡(jiǎn)單demo

pasteEle.addEventListener("paste", function (e){
 if ( !(e.clipboardData && e.clipboardData.items) ) {
  return ;
 }

 for (var i = 0, len = e.clipboardData.items.length; i < len; i++) {
  var item = e.clipboardData.items[i];

  if (item.kind === "string") {
   item.getAsString(function (str) {
    // str 是獲取到的字符串
   })
  } else if (item.kind === "file") {
   var pasteFile = item.getAsFile();
   // pasteFile就是獲取到的文件
  }
 }
});

注意如果是string類(lèi)型的數(shù)據(jù),可能針對(duì)具體是text/plain、text/html進(jìn)行分別的處理。

坑在這里

根據(jù)親自測(cè)驗(yàn),遇到了一個(gè)很大的坑,暫時(shí)還不知道該怎么解決:

當(dāng)ctrl+c復(fù)制圖片并粘貼之后,clipboaddata的

DataTransferItem {kind: "string", type: "text/html"}

即輸出的str:

<meta http-equiv="content-type" content="text/html; charset=utf-8"><img src="http://img1.gtimg.com/cd/pics/hv1/154/103/2237/145487344.jpg" alt="大媽們?cè)谘盼鞲咚偕咸鴱V場(chǎng)舞 被警察及時(shí)阻止"/>

當(dāng)右鍵復(fù)制圖片并粘貼之后,

DataTransferItem {kind: "file", type: "image/png"}

所以這里對(duì)于圖片如果想要獲取粘貼的圖片進(jìn)行上傳,只有直接右鍵復(fù)制的圖片才能識(shí)別到,ctrl+c的并不能識(shí)別.....

最近自己在研究看能不能通過(guò)復(fù)制任意地方的圖片,粘貼到本地富文本編輯器窗口,粘貼自動(dòng)上傳,這里研究了一下paste事件,但是相關(guān)事件很多,繼續(xù)摸索中....

以上這篇基于js粘貼事件paste簡(jiǎn)單解析以及遇到的坑就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡(jiǎn)單分析javascript中的函數(shù)

    簡(jiǎn)單分析javascript中的函數(shù)

    這篇文章主要為大家詳細(xì)介紹了javascript函數(shù),幫助大家更好的理解js函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • javascript跟隨鼠標(biāo)x,y坐標(biāo)移動(dòng)的字效果

    javascript跟隨鼠標(biāo)x,y坐標(biāo)移動(dòng)的字效果

    javascript跟隨鼠標(biāo)x,y坐標(biāo)移動(dòng)的字效果...
    2007-04-04
  • Vue formData實(shí)現(xiàn)圖片上傳

    Vue formData實(shí)現(xiàn)圖片上傳

    這篇文章主要為大家詳細(xì)介紹了Vue formData實(shí)現(xiàn)圖片上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Ajax實(shí)現(xiàn)不刷新取最新商品

    Ajax實(shí)現(xiàn)不刷新取最新商品

    本文主要介紹了Ajax 實(shí)現(xiàn)不刷新取最新商品的方法。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 微信小程序用canvas畫(huà)圖并分享

    微信小程序用canvas畫(huà)圖并分享

    這篇文章主要為大家詳細(xì)介紹了微信小程序用canvas畫(huà)圖,并實(shí)現(xiàn)分享功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • fckeditor粘貼Word時(shí)彈出窗口取消的方法

    fckeditor粘貼Word時(shí)彈出窗口取消的方法

    這篇文章主要介紹了fckeditor粘貼Word時(shí)彈出窗口取消的方法,是應(yīng)用fckeditor時(shí)非常實(shí)用的技巧,需要的朋友可以參考下
    2014-10-10
  • JS中的const命令你真懂它嗎

    JS中的const命令你真懂它嗎

    這篇文章主要介紹了JS中的const命令你真懂它嗎,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • JS實(shí)現(xiàn)的合并兩個(gè)有序鏈表算法示例

    JS實(shí)現(xiàn)的合并兩個(gè)有序鏈表算法示例

    這篇文章主要介紹了JS實(shí)現(xiàn)的合并兩個(gè)有序鏈表算法,結(jié)合實(shí)例形式分析了JavaScript鏈表的定義、節(jié)點(diǎn)插入、刪除、查找等相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • JavaScript中利用Array filter() 方法壓縮稀疏數(shù)組

    JavaScript中利用Array filter() 方法壓縮稀疏數(shù)組

    Array filter() 方法會(huì)跳過(guò)稀疏數(shù)組中缺少的元素,它的返回?cái)?shù)組總是稠密的。這篇文章給大家介紹了JavaScript中利用Array filter() 方法壓縮稀疏數(shù)組的相關(guān)知識(shí),需要的朋友參考下
    2018-02-02
  • 原生js實(shí)現(xiàn)上傳圖片控件

    原生js實(shí)現(xiàn)上傳圖片控件

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)上傳圖片控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評(píng)論