91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于js粘貼事件paste的示例分析

發布時間:2021-09-01 14:38:17 來源:億速云 閱讀:115 作者:小新 欄目:web開發

這篇文章給大家分享的是有關基于js粘貼事件paste的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

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

paste事件

可以用js給頁面中的元素綁定paste事件的方法,當用戶鼠標在該元素上或者該元素處于focus狀態,綁定到paste事件的方法就運行了。

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

事件對象

獲取事件對象

先寫一下事件綁定的代碼

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

粘貼事件提供了一個clipboardData的屬性,如果該屬性有items屬性,那么就可以查看items中是否有圖片類型的數據了。Chrome有該屬性,Safari沒有。

clipboardData介紹

介紹一下clipboardData對象,它實際上是一個DataTransfer類型的對象,DataTransfer是拖動產生的一個對象,但實際上粘貼事件也是它。

clipboardData的屬性介紹

屬性類型說明
dropEffectString默認是 none
effectAllowedString默認是 uninitialized
filesFileList粘貼操作為空List
itemsDataTransferItemList剪切板中的各項數據
typesArray剪切板中的數據類型 該屬性在Safari下比較混亂

items介紹

items是一個DataTransferItemList對象,自然里面都是DataTransferItem類型的數據了。

屬性

items的DataTransferItem有兩個屬性kind和type

屬性說明
kind一般為string或者file
type具體的數據類型,例如具體是哪種類型字符串或者哪種類型的文件,即MIME-Type

方法

方法參數說明
getAsFile如果kindfile,可以用該方法獲取到文件
getAsString回調函數如果kindstring,可以用該方法獲取到字符串,字符串需要用回調函數得到,回調函數的第一個參數就是剪切板中的字符串

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

types介紹

一般types中常見的值有

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

簡單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類型的數據,可能針對具體是text/plain、text/html進行分別的處理。

坑在這里

根據親自測驗,遇到了一個很大的坑,暫時還不知道該怎么解決:

當ctrl+c復制圖片并粘貼之后,clipboaddata的

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

即輸出的str:

<meta http-equiv="content-type" content="text/html; charset=utf-8"><img src="https://cache.yisu.com/upload/information/20200622/114/66116.jpg" alt="大媽們在雅西高速上跳廣場舞 被警察及時阻止"/>

當右鍵復制圖片并粘貼之后,

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

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

感謝各位的閱讀!關于“基于js粘貼事件paste的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

密山市| 图木舒克市| 锦屏县| 肇源县| 怀远县| 新疆| 新野县| 明溪县| 铁力市| 略阳县| 铅山县| 镇坪县| 安吉县| 兰州市| 鲁山县| 奎屯市| 汽车| 泗阳县| 湘乡市| 灵台县| 彭水| 扎赉特旗| 淮滨县| 肇州县| 阳城县| 云霄县| 隆尧县| 民乐县| 桐柏县| 泰顺县| 环江| 衡阳市| 友谊县| 临泽县| 新沂市| 邢台市| 美姑县| 伊金霍洛旗| 任丘市| 新津县| 乳源|