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

vue3實(shí)現(xiàn)頁(yè)面截圖功能示例詳解

 更新時(shí)間:2024年10月25日 09:53:02   作者:小菜又鳥(niǎo)  
在Vue3項(xiàng)目中實(shí)現(xiàn)頁(yè)面截圖的功能,可以通過(guò)使用js-web-screen-shot組件來(lái)實(shí)現(xiàn),本文以toolbox.js作為案例,詳細(xì)介紹了如何在Vue3框架下,利用js-web-screen-shot組件實(shí)現(xiàn)頁(yè)面截圖的具體步驟和方法,這一技術(shù)的應(yīng)用,不僅可以提高用戶體驗(yàn),還能在需要時(shí)方便地獲取頁(yè)面的即時(shí)信息

項(xiàng)目場(chǎng)景:

vue3實(shí)現(xiàn)頁(yè)面截圖功能

描述

使用 js-web-screen-shot 組件

結(jié)果

解決方案:

頁(yè)面:

<cut ref="cutRef" @getCut="getCutValue"></cut>
<div
  ref="textarea"
  class="input_message"
  contenteditable="true"
></div>
import { ref} from "vue";
import cut from "../../toolbox/cut/index.vue";
import { createElementImg } from "../../../utils/base/toolbox";
const cutRef = ref(null);
// 功能區(qū)--頁(yè)面截圖
const getCutValue = (e) => {
  createElementImg(e, textarea.value);
};

toolbox.js

//創(chuàng)建img
const createElementImg = (e, vnode, w = 200, h = 0) => {
  const img = document.createElement("img");
  img.src = e;
  img.alt = "圖片加載失敗";
  img.width = w;
  if (h) {
    img.height = h;
  }
  vnode.appendChild(img);
};
export { createElementImg };

組件

<template>
  <div></div>
</template>
<script setup>
import { ref } from "vue";
import ScreenShort from "js-web-screen-shot";
import { defineEmits } from "vue";
// 定義 emit 事件
const emit = defineEmits();
const exportimg = ref("");
// 按鈕點(diǎn)擊時(shí)間方法,構(gòu)建插件對(duì)象
const btnClick = () => {
  // 更多參數(shù) 和使用可以看它包里面的README.md文件
  const screenShotHandler = new ScreenShort({
    // 是否啟用webrtc,值為boolean類型,值為false則使用html2canvas來(lái)截圖
    enableWebRtc: false,
    // 層級(jí)級(jí)別,這個(gè)要比頁(yè)面上其他元素的z-index的值大
    level: 2001,
    completeCallback: callback, // 截圖成功完成的回調(diào)
    closeCallback: closeFn, // 截圖取消的回調(diào)
  });
};
const callback = (base64data) => {
  var image = new Image();
  image.src = base64data.base64;
  image.onload = () => {
    var canvas = convertImageToCanvas(image);
    var url = canvas.toDataURL("image/jpeg"); // base64編碼的圖片
    // 通過(guò)atob將base64進(jìn)行編碼
    var bytes = window.atob(url.split(",")[1]);
    // 處理異常,將ASCII碼小于0的轉(zhuǎn)換為大于0,進(jìn)行二進(jìn)制轉(zhuǎn)換
    var buffer = new ArrayBuffer(bytes.length);
    // 生成一個(gè)8位數(shù)的數(shù)組
    var uint = new Uint8Array(buffer);
    for (var j = 0; j < bytes.length; j++) {
      uint[j] = bytes.charCodeAt(j); // 根據(jù)長(zhǎng)度返回相對(duì)應(yīng)的Unicode 編碼
    }
    // Blob對(duì)象  // type 為圖片的格式
    const blodImg = new Blob([buffer], { type: "image/jpeg" });
    exportimg.value = URL.createObjectURL(blodImg);
    emit("getCut", exportimg.value); // 觸發(fā)事件并傳遞數(shù)據(jù)
  };
};
const convertImageToCanvas = (image) => {
  var canvas = document.createElement("canvas");
  canvas.width = image.width;
  canvas.height = image.height;
  canvas.getContext("2d").drawImage(image, 0, 0);
  return canvas;
};
const closeFn = () => {
  // 取消截圖的回調(diào)
};
defineExpose({
  btnClick,
  callback,
  convertImageToCanvas,
  closeFn,
});
</script>
<style scoped></style>

到此這篇關(guān)于vue3實(shí)現(xiàn)頁(yè)面截圖功能的文章就介紹到這了,更多相關(guān)vue3 頁(yè)面截圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue修改數(shù)據(jù)頁(yè)面無(wú)效的解決方案

    vue修改數(shù)據(jù)頁(yè)面無(wú)效的解決方案

    這篇文章主要介紹了vue修改數(shù)據(jù)頁(yè)面無(wú)效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 詳解Nuxt內(nèi)導(dǎo)航欄的兩種實(shí)現(xiàn)方式

    詳解Nuxt內(nèi)導(dǎo)航欄的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解Nuxt內(nèi)導(dǎo)航欄的兩種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • vue復(fù)制內(nèi)容到剪切板代碼實(shí)現(xiàn)

    vue復(fù)制內(nèi)容到剪切板代碼實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于vue復(fù)制內(nèi)容到剪切板代碼實(shí)現(xiàn)的相關(guān)資料,在Web應(yīng)用程序中剪貼板(Clipboard)操作是非常常見(jiàn)的操作之一,需要的朋友可以參考下
    2023-08-08
  • 詳解如何解決Vue和vue-template-compiler版本之間的問(wèn)題

    詳解如何解決Vue和vue-template-compiler版本之間的問(wèn)題

    這篇文章主要介紹了詳解如何解決Vue和vue-template-compiler版本之間的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vant-list上拉加載onload事件觸發(fā)多次問(wèn)題及解決

    vant-list上拉加載onload事件觸發(fā)多次問(wèn)題及解決

    這篇文章主要介紹了vant-list上拉加載onload事件觸發(fā)多次問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue實(shí)現(xiàn)打地鼠小游戲

    vue實(shí)現(xiàn)打地鼠小游戲

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)打地鼠小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • vue-preview動(dòng)態(tài)獲取圖片寬高并增加旋轉(zhuǎn)功能的實(shí)現(xiàn)

    vue-preview動(dòng)態(tài)獲取圖片寬高并增加旋轉(zhuǎn)功能的實(shí)現(xiàn)

    這篇文章主要介紹了vue-preview動(dòng)態(tài)獲取圖片寬高并增加旋轉(zhuǎn)功能的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 解決vue.js not detected的問(wèn)題

    解決vue.js not detected的問(wèn)題

    本文主要介紹了解決vue.js not detected的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 解決vue中axios設(shè)置超時(shí)(超過(guò)5分鐘)沒(méi)反應(yīng)的問(wèn)題

    解決vue中axios設(shè)置超時(shí)(超過(guò)5分鐘)沒(méi)反應(yīng)的問(wèn)題

    這篇文章主要介紹了解決vue中axios設(shè)置超時(shí)(超過(guò)5分鐘)沒(méi)反應(yīng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 解析Vue2.0雙向綁定實(shí)現(xiàn)原理

    解析Vue2.0雙向綁定實(shí)現(xiàn)原理

    本篇文章主要介紹了解析Vue2.0雙向綁定實(shí)現(xiàn)原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02

最新評(píng)論

桃江县| 修水县| 石狮市| 吉安县| 渝中区| 湖南省| 林西县| 鱼台县| 江油市| 青铜峡市| 辛集市| 清流县| 金寨县| 石台县| 光山县| 来宾市| 吉隆县| 麦盖提县| 赤壁市| 东乌珠穆沁旗| 农安县| 剑川县| 富源县| 通州市| 千阳县| 泸定县| 巫溪县| 元江| 龙泉市| 静海县| 南汇区| 东兴市| 谢通门县| 抚顺县| 宁远县| 赣州市| 彝良县| 栾川县| 达拉特旗| 离岛区| 信阳市|