国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

瀏覽器原生剪貼板:原來它能這樣讀取用戶截圖!

開發(fā)
當(dāng)我們使用 GitHub 時(shí),會發(fā)現(xiàn) Ctrl+V 就能直接讀取用戶剪貼板圖片進(jìn)行粘貼,那么它是如何工作的?安全性如何?

當(dāng)我們使用 GitHub 時(shí),會發(fā)現(xiàn) Ctrl+V 就能直接讀取用戶剪貼板圖片進(jìn)行粘貼,那么它是如何工作的?安全性如何?

一、新一代神器:navigator.clipboard

navigator.clipboard API 是一個(gè)異步的、基于 Promise 的現(xiàn)代接口,其具有三大核心優(yōu)勢:

  • 所有讀寫操作都返回 Promise,不會阻塞頁面
  • 操作剪貼板需要獲得用戶授權(quán),既安全又透明
  • 除了文本,它能輕松讀寫圖片等二進(jìn)制數(shù)據(jù)

二、寫入剪貼板

在深入讀取操作前,我們先看看如何向剪貼板寫入內(nèi)容。

1. 寫入文本

這是最常見的操作,比如實(shí)現(xiàn)一個(gè)“點(diǎn)擊復(fù)制”按鈕。

const copyBtn = document.getElementById('copy-btn');

copyBtn.addEventListener('click', async () => {
  try {
    await navigator.clipboard.writeText('你好,世界!');
    console.log('文本已成功復(fù)制到剪貼板');
  } catch (err) {
    console.error('復(fù)制失敗: ', err);
  }
});

2. 寫入圖片

寫入圖片稍微復(fù)雜一點(diǎn),需要使用 clipboard.write() 方法,并傳入一個(gè) ClipboardItem 對象。這個(gè)對象可以包含不同 MIME 類型的數(shù)據(jù)。

三、讀取剪貼板

當(dāng)用戶在我們的網(wǎng)頁上執(zhí)行粘貼操作時(shí),我們?nèi)绾巫x取剪貼板里的內(nèi)容,特別是圖片?

1. 關(guān)鍵:獲取用戶授權(quán)

這是最重要的一步。當(dāng)我們嘗試讀取剪貼板時(shí),瀏覽器會主動彈出提示框,請求用戶授權(quán)。

只有用戶點(diǎn)擊“允許”,我們的代碼才能繼續(xù)執(zhí)行。這徹底杜絕了惡意網(wǎng)站在后臺偷偷讀取用戶剪貼板內(nèi)容的可能。

2. 讀取步驟詳解

讓我們來實(shí)現(xiàn)一個(gè)監(jiān)聽粘貼事件并處理圖片的功能。

  • 監(jiān)聽 paste 事件
  • 調(diào)用 navigator.clipboard.read():該方法會返回 Promise,解析為一個(gè) ClipboardItem 對象的數(shù)組
  • 檢查每個(gè) ClipboardItem MIME 類型
  • 獲取數(shù)據(jù) Blob:如果 MIME 中包含我們想要的圖片類型(如 "image/png"),我們就可以調(diào)用 item.getType() 方法解析為該數(shù)據(jù)的 Blob 對象
  • 拿到 Blob 對象后,最常見的做法是使用 URL.createObjectURL() 生成一個(gè)臨時(shí) URL,并將其顯示在 <img> 標(biāo)簽中,或直接上傳到服務(wù)器

3. 完整代碼示例

假設(shè)我們有這樣一個(gè) HTML 結(jié)構(gòu):

<div id="paste-area" contenteditable="true">
  <p>請?jiān)谶@里粘貼你的截圖...</p>
</div>
<img id="preview-image" src="" alt="圖片預(yù)覽" style="max-width: 100%; margin-top: 20px;">

對應(yīng)的 JavaScript 代碼如下:

const pasteArea = document.getElementById('paste-area');
const previewImage = document.getElementById('preview-image');

pasteArea.addEventListener('paste', async (e) => {
 // 阻止默認(rèn)的粘貼行為
  e.preventDefault(); 
 try {
    // 請求讀取剪貼板的權(quán)限
    const permission = await navigator.permissions.query({ name: 'clipboard-read' });
    if (permission.state === 'denied') {
      throw new Error('剪貼板讀取權(quán)限被拒絕');
    }

    // 讀取剪貼板內(nèi)容
    const clipboardItems = await navigator.clipboard.read();
    for (const item of clipboardItems) {
      // 檢查是否有圖片類型
      const imageType = item.types.find(type => type.startsWith('image/'));
      if (imageType) {
        // 獲取圖片 blob 數(shù)據(jù)
        const blob = await item.getType(imageType);
        // 創(chuàng)建一個(gè)臨時(shí)的 URL 來預(yù)覽圖片
        const imageUrl = URL.createObjectURL(blob);
        previewImage.src = imageUrl;
        // 在這里,你可以將 blob 上傳到服務(wù)器
        // uploadToServer(blob); 
        console.log('圖片粘貼成功!');
        return; // 處理完圖片后即可退出
      }
    }

    // 如果沒有圖片,可以嘗試讀取文本
    const text = await navigator.clipboard.readText();
    console.log('粘貼的文本內(nèi)容:', text);
    pasteArea.innerText = text;

  } catch (err) {
    console.error('粘貼失敗: ', err);
    // 如果沒有圖片,嘗試用傳統(tǒng)方式讀取文本
    const text = e.clipboardData.getData('text/plain');
    if (text) {
        pasteArea.innerText = text;
    }
  }
});

function uploadToServer(blob) {
 const formData = new FormData();
  formData.append('image', blob, 'screenshot.png');

 // fetch('/api/upload', {
 //   method: 'POST',
 //   body: formData
 // }).then(...);
 console.log('正在模擬上傳...', formData.get('image'));
}

現(xiàn)在,截取一張圖到剪貼板,然后在這個(gè)區(qū)域按下 Ctrl+V,你會看到瀏覽器彈出權(quán)限請求。授權(quán)后,圖片就會立刻顯示在下方!

責(zé)任編輯:趙寧寧 來源: JavaScript
相關(guān)推薦

2009-12-18 14:10:29

Ruby訪問剪貼板

2020-07-02 07:53:59

App操作系統(tǒng)應(yīng)用

2011-08-09 10:27:41

iOS剪貼板

2021-12-02 10:11:44

鴻蒙HarmonyOS應(yīng)用

2021-12-05 09:28:18

Windows 11操作系統(tǒng)微軟

2021-12-06 15:15:14

WindowsEdgeChrome

2016-05-11 15:01:31

Linux剪貼板管理器

2022-09-04 15:49:17

漏洞加密貨幣安全

2009-10-21 10:15:29

VB.NET復(fù)制

2010-02-02 17:47:59

C++操作剪貼板

2025-11-13 09:30:11

2020-12-14 05:57:01

clipboard.Selection execCommand

2009-08-10 17:37:54

2023-02-06 07:17:22

2021-07-12 12:16:17

APIGoogle微軟

2015-01-21 15:45:50

斯巴達(dá)瀏覽器

2022-03-31 22:53:47

Windows 11太陽谷2智能剪貼板

2021-01-20 07:10:29

微軟 瀏覽器Edge

2023-09-26 07:39:21

2012-08-28 14:23:35

傲游瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产精品视频网站| 男人j进女人j| 亚洲高清免费观看高清完整版| 日本不卡免费高清视频| 久久精品视频在线播放| 欧美精品激情在线观看| 黄色一区三区| 亚洲天堂av影院| 在线综合欧美| 国产欧美中文字幕| 免费国产自久久久久三四区久久| 久久久91精品国产一区不卡| 日本肉肉一区| 欧美日韩国产综合一区二区三区| 韩日视频在线| 日本道精品一区二区三区| 亚洲尤物在线视频| 欧美日韩另类字幕中文| а√天堂www在线а√天堂视频| 日韩毛片视频在线看| 蜜桃传媒av| 亚洲精选视频在线| 探花国产精品| 91成人免费电影| 成人影院在线观看| 国产丝袜一区二区三区| 成人在线视频观看| 久久久这里只有精品视频| 欧美人妖在线观看| 国产精品私拍pans大尺度在线| 精品久久网站| 成人在线免费网站| 日韩精品国产欧美| 免费看毛片的网址| 国产亚洲一区二区三区四区| 爆操妹子视频在线观看| 色综合久久综合中文综合网| yiren22综合网成人| 亚洲精品在线网站| 91精品国产自产观看在线| 97在线视频精品| 99re6这里只有精品| 欧美国产视频在线观看| 国产福利一区在线| 怡红院亚洲色图| 色综合天天做天天爱| 久草在线资源站资源站| 麻豆国产精品va在线观看不卡 | 懂色一区二区三区免费观看| www国产无套内射com| 91色乱码一区二区三区| 亚洲精品少妇久久久久久 | 免费观看在线综合色| 欧美国产综合在线| 国产精品爽爽爽| 成人avav在线| 国产人妻人伦精品| 色一情一伦一子一伦一区| 蜜桃麻豆av在线| 亚洲深夜福利网站| www.av亚洲| 人人草在线视频| 精品国产污污免费网站入口 | 国产精品亚洲视频| 欧美日韩国产限制| 久久国产主播| 国产精品久久..4399| 久久伊人蜜桃av一区二区| 啊啊啊射了视频网站| 好吊成人免视频| 日韩精品三区| 女同视频在线观看| 中文字幕精品国产| 国产成人三级| 日本一区二区免费看| 日韩1区2区日韩1区2区| 精品无码一区二区三区在线| 精品欧美国产一区二区三区| 精东粉嫩av免费一区二区三区| 人妻激情另类乱人伦人妻| 中文字幕欧美一| 阿v视频在线| 国产精品96久久久久久又黄又硬| 久久精品动漫| 加勒比日本影视| 精品少妇一区二区| 欧美韩一区二区| 亚洲一区二区三区乱码| 夜夜嗨av一区二区三区网页| 手机在线免费av| 97超碰色婷婷| 国产精品77777| 成人高潮成人免费观看| 久久影视免费观看 | 日本少妇精品亚洲第一区| 国产日韩精品推荐| 一区二区三区免费网站| av在线播放一区| 日韩欧美一区二区视频在线播放| 亚洲精品高清在线| 九七影院97影院理论片久久| 久久婷婷开心| 国产精品免费久久久久| 91精品久久久久久粉嫩| 国产精品亚洲综合天堂夜夜| 91视频观看视频| 外国成人直播| 亚洲人成人77777线观看| 在线观看区一区二| 欧洲毛片在线视频免费观看| 国模杨依粉嫩蝴蝶150p| 国产丝袜一区二区三区免费视频| 亚洲婷婷免费| 中文字幕在线二区| 欧美做受高潮电影o| 26uuu国产一区二区三区| 综合毛片免费视频| 综合色婷婷一区二区亚洲欧美国产| 欧美日韩亚洲丝袜制服| 欧美精品啪啪| 黄色av网站在线| 91精品在线观看视频| 亚洲大片免费看| 欧美男gay| 九色中文视频| 日本不卡免费高清视频| 国产精品精品国产色婷婷| 日本在线成人| 在线免费观看视频黄| 久久的精品视频| 国产亚洲女人久久久久毛片| 亚洲精品tv| 国产xxxxx在线观看| 久久影院中文字幕| 久久婷婷久久一区二区三区| 欧美91在线|欧美| 国产99久久九九精品无码| 久久精品视频网站| 91丨porny丨户外露出| 91精品一区| www.夜夜爽| 国产精品高清网站| 亚洲va天堂va国产va久| 欧美欧美全黄| 国产成人l区| 老司机午夜免费福利视频| 一区二区日韩精品| 国产欧美中文在线| 成人激情诱惑| 最新av网站在线观看 | 欧美日韩久久久一区| 久久一二三区| 九色porny丨国产首页在线| 国产高清不卡无码视频| 久久网福利资源网站| 亚洲精品五月天| 海角社区69精品视频| 日韩欧美一中文字暮专区 | 国产老妇另类xxxxx| 高清亚洲高清| 欧美hdsex| 国产在线观看不卡| 欧美一区二区三区免费在线看 | 岛国一区二区三区高清视频| 欧美一区二区在线不卡| 国产一区二区视频在线| 综合欧美亚洲| 日本福利片高清在线观看| 免费电影一区| 日韩中文在线中文网在线观看| 一区在线中文字幕| 亚洲激情综合| 国产a亚洲精品| 全部孕妇毛片丰满孕妇孕| 国产精品香蕉视屏| 亚洲人成网在线播放| 中文字幕亚洲一区二区av在线| 欧美国产先锋| abab456成人免费网址| 五月天婷婷综合社区| 亚洲v欧美v另类v综合v日韩v| 久久久精品一区| 色综合天天综合| 成人一区在线看| 伊人色**天天综合婷婷| 都市激情亚洲综合| 黄网站app在线观看下载视频大全官网| 欧美日韩在线精品| 欧美高清在线观看| 91精品国产综合久久国产大片| 91天堂素人约啪| 日韩午夜免费视频| 韩国女主播一区二区三区| 色老头视频在线观看| 国产特级黄色大片| 精品视频一区在线| 91av在线看| 精品视频久久久久久| 亚洲国产欧美在线| 高清在线成人网|