最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)復(fù)制文字復(fù)制圖片實例詳解

 更新時間:2023年02月23日 09:38:53   作者:元子不圓呀  
這篇文章主要為大家介紹了vue實現(xiàn)復(fù)制文字復(fù)制圖片實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

復(fù)制文字和圖片是我們經(jīng)常會使用到的需求,我們這篇文章主要介紹使用navigator.clipboard.write()來實現(xiàn)復(fù)制文字和圖片。不過這個屬性是需要考慮瀏覽器的兼容性的,可以參考MDN

document.execCommand('copy')

在很久之前我們是使用document.execCommand('copy')來實現(xiàn)復(fù)制文本的,但是現(xiàn)在mdn上已經(jīng)將這個命令廢棄了。

當(dāng)一個 HTML 文檔切換到設(shè)計模式時,document暴露 execCommand 方法,該方法允許運行命令來操縱可編輯內(nèi)容區(qū)域的元素。如果傳入copy命令,那么就能實現(xiàn)復(fù)制的功能。

比如像下面這樣

  // 復(fù)制文字
  copyText(link, cb) {
    let input = document.createElement('textarea');
    input.style.cssText = 'position: absolute; top: 0; left: 0; opacity: 0; z-index: -10;';
    input.value = link;
    document.body.appendChild(input);
    input.select();
    document.execCommand('copy');
    document.body.removeChild(input);
    if (typeof cb === 'function') {
      cb();
    }
  }

Clipboard

Clipboard 接口實現(xiàn)了 Clipboard API,如果用戶授予了相應(yīng)的權(quán)限,其就能提供系統(tǒng)剪貼板的讀寫訪問能力。在 Web 應(yīng)用程序中,Clipboard API 可用于實現(xiàn)剪切、復(fù)制和粘貼功能。

方法

Clipboard提供了以下方法,方便我們讀取剪切板的內(nèi)容。

  • read():從剪貼板讀取數(shù)據(jù)(比如圖片),返回一個 Promise對象。在檢索到數(shù)據(jù)后,promise 將兌現(xiàn)一個 ClipboardItem對象的數(shù)組來提供剪切板數(shù)據(jù)。
  • readText():從操作系統(tǒng)讀取文本;返回一個 Promise,在從剪切板中檢索到文本后,promise 將兌現(xiàn)一個包含剪切板文本數(shù)據(jù)的 DOMString
  • write(): 寫入任意數(shù)據(jù)至操作系統(tǒng)剪貼板。這是一個異步操作,在操作完成后,返回的 promise 的將被兌現(xiàn)。
  • writeText(): 寫入文本至操作系統(tǒng)剪貼板。返回一個 Promise,在文本被完全寫入剪切板后,返回的 promise 將被兌現(xiàn)。

復(fù)制文本

復(fù)制文本的方法很簡單,就是使用navigator.clipboard.writeText()方法。

具體代碼實現(xiàn)如下:

copyTextToClipboard(text) {
  return new Promise((resolve, reject) => {
    navigator.clipboard.writeText(text).then(
      () => {
        resolve(true)
      },
      () => {
        reject(new Error('復(fù)制失敗'))
      }
    )
  })
}

復(fù)制圖片

復(fù)制圖片主要用到navigator.clipboard.write()方法。 因為我們在頁面中通常是要根據(jù)一個img元素復(fù)制圖片,主要實現(xiàn)思路如下:

  • 先將img元素轉(zhuǎn)成base64
  • 再將base64轉(zhuǎn)成blob對象
  • 根據(jù)blob對象new一個ClipboardItem對象
  • 最后再根據(jù)navigator.clipboard.writeText()將內(nèi)容寫入剪貼板中

具體代碼實現(xiàn)如下:

  // 圖片元素轉(zhuǎn)base64
  getBase64Image(img) {
    let canvas = document.createElement('canvas');
    canvas.width = img.width;
    canvas.height = img.height;
    let ctx = canvas.getContext('2d');
    ctx?.drawImage(img, 0, 0, img.width, img.height);
    let dataURL = canvas.toDataURL('image/png');
    return dataURL;
  },
  // base64圖片轉(zhuǎn)為blob
  getBlobImage(dataurl) {
    let arr = dataurl.split(',');
    let mime = arr[0].match(/:(.*?);/)[1];
    let bstr = atob(arr[1]);
    let n = bstr.length;
    let u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime });
  },
  // 復(fù)制圖片
  copyImage(dom, cb) {
    let dataurl = this.getBase64Image(dom);
    let blob = this.getBlobImage(dataurl);
    navigator.clipboard.write([
      new window.ClipboardItem({
        [blob.type]: blob
      })
    ]).then(function() {
      if (typeof cb === 'function') {
        cb();
      }
    }, function() {
      console.log('圖片復(fù)制失敗!');
    });
  }

以上就是vue實現(xiàn)復(fù)制文字復(fù)制圖片實例詳解的詳細(xì)內(nèi)容,更多關(guān)于vue復(fù)制文字圖片的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于Vue項目跨平臺運行問題的解決方法

    關(guān)于Vue項目跨平臺運行問題的解決方法

    這篇文章主要介紹了關(guān)于Vue項目跨平臺運行問題的解決方法,特別記錄一下踩的坑,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • vue3+element-plus?Dialog對話框的使用與setup?寫法的用法

    vue3+element-plus?Dialog對話框的使用與setup?寫法的用法

    這篇文章主要介紹了vue3+element-plus?Dialog對話框的使用?與?setup?寫法的使用,本文通過兩種方式結(jié)合實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue3 + ts + pnpm:nprogress / 頁面頂部進(jìn)度條效果實現(xiàn)

    vue3 + ts + pnpm:nprogress / 頁

    NProgress是一款輕量級的進(jìn)度條庫,主要用于網(wǎng)頁頂部顯示頁面加載或運行進(jìn)度,它易于安裝和使用,并提供良好的視覺效果,NProgress也可以與VueRouter結(jié)合使用,通過導(dǎo)航守衛(wèi)在路由跳轉(zhuǎn)時自動顯示和隱藏進(jìn)度條,該庫的使用提高了用戶對網(wǎng)頁加載狀態(tài)的感知,優(yōu)化了用戶體驗
    2024-09-09
  • vue keep-alive多層級路由支持問題分析

    vue keep-alive多層級路由支持問題分析

    這篇文章主要介紹了vue keep-alive多層級路由支持,在文章開頭給大家介紹了keep-alive使用問題,解決使用keep-alive include屬性問題,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • vue.js開發(fā)環(huán)境安裝教程

    vue.js開發(fā)環(huán)境安裝教程

    這篇文章主要為大家詳細(xì)介紹了vue.js開發(fā)環(huán)境的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue跳轉(zhuǎn)頁面常用的4種方法與區(qū)別小結(jié)

    vue跳轉(zhuǎn)頁面常用的4種方法與區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于vue跳轉(zhuǎn)頁面常用的4種方法與區(qū)別,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-03-03
  • Vue3使用v-if指令進(jìn)行條件渲染的實例代碼

    Vue3使用v-if指令進(jìn)行條件渲染的實例代碼

    條件渲染是根據(jù)條件的真假來有條件地渲染元素,在Vue.js 3.x中,常見的條件渲染包括使用v-if指令和v-show指令,本文講解使用v-if指令進(jìn)行條件渲染,需要的朋友可以參考下
    2024-03-03
  • vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯誤的解決

    vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯誤的解決

    這篇文章主要介紹了vue使用iview的modal彈窗嵌套modal出現(xiàn)格式錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue.js實現(xiàn)動畫與過渡效果的示例代碼

    Vue.js實現(xiàn)動畫與過渡效果的示例代碼

    在現(xiàn)代前端開發(fā)中,用戶體驗至關(guān)重要,一個精美的動畫過渡不僅能提升界面的美觀性,還能讓用戶在使用時感受到流暢的交互體驗,在本文中,我們將深入探討如何在 Vue.js 中實現(xiàn)動畫與過渡效果,并提供示例代碼,需要的朋友可以參考下
    2024-10-10
  • Vue組件間數(shù)據(jù)傳遞的方式(3種)

    Vue組件間數(shù)據(jù)傳遞的方式(3種)

    這篇文章主要介紹了Vue組件間數(shù)據(jù)傳遞的方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論

道孚县| 阳新县| 齐齐哈尔市| 白水县| 柘城县| 正定县| 灵宝市| 盐池县| 安平县| 张家口市| 邓州市| 德保县| 壤塘县| 纳雍县| 昔阳县| 三河市| 黔西| 元朗区| 西乌| 岢岚县| 平泉县| 神木县| 高雄市| 封开县| 绥芬河市| 仙居县| 额尔古纳市| 门头沟区| 定州市| 稻城县| 洪泽县| 东乡族自治县| 常州市| 综艺| 珠海市| 潞城市| 比如县| 安仁县| 西盟| 张家港市| 岳普湖县|