国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3插件——vue-web-screen-shot——實(shí)現(xiàn)頁(yè)面截圖功能

這篇具有很好參考價(jià)值的文章主要介紹了vue3插件——vue-web-screen-shot——實(shí)現(xiàn)頁(yè)面截圖功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近在看前同事發(fā)我的vue3框架時(shí),發(fā)現(xiàn)他們有個(gè)功能是要實(shí)現(xiàn)頁(yè)面截圖功能。

效果圖如下:

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必會(huì)知識(shí)點(diǎn),vue.js,前端,javascript
vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必會(huì)知識(shí)點(diǎn),vue.js,前端,javascript

最近項(xiàng)目遇到的要求是彈出框上傳文件,需要用到頁(yè)面截圖,由于使用的是Vue3的框架于是選擇用vue-web-screen-shot組件進(jìn)行操作。(由于插件是Vue3編寫的,所以只適用于Vue3的項(xiàng)目,如果是Vue2的項(xiàng)目,截圖組件可以使用js-web-screen-shot)

下面介紹實(shí)現(xiàn)步驟:

1.操作步驟

1.1在項(xiàng)目中添加vvue-web-screen-shot組件

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必會(huì)知識(shí)點(diǎn),vue.js,前端,javascript
我這邊安裝的版本是1.5.2,安裝代碼指令如下:

yarn add vue-web-screen-shot

或者

npm install vue-web-screen-shot --save

1.2在項(xiàng)目入口文件導(dǎo)入組件——main.ts

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必會(huì)知識(shí)點(diǎn),vue.js,前端,javascript
main.ts文件中導(dǎo)入組件

import screenShort from 'vue-web-screen-shot';
const createClient = async():Promise<void>=>{
	const app = createApp(App);
	app.use(screenShort,{enableWebRtc:false});
	app.mount('#app');
}

1.3在需要使用的頁(yè)面使用組件

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必會(huì)知識(shí)點(diǎn),vue.js,前端,javascript

<a-upload ref="uploadRef" v-model:file-list="issueForm.fileList" action="/api/sys-storage/image/upload" 
:headers="{
	'Fusion-Auth':getToken()||'',//此處放頭部信息
}"
:limit="1"
accept="image/png,image/jpeg,image/jpg"
image-preview
list-type="picture-card"
:show-link="true"
:on-button-click="handleButtonClick"
/>

vue截屏插件,vue3+antd+vite,vue3+vite+antd,js必會(huì)知識(shí)點(diǎn),vue.js,前端,javascript

<screen-short v-if="screenshotStatus" @destroy-component="destroyComponent" @get-image-data="completeCallback"></screen-short>

如果將screen-short組件放在彈出窗內(nèi)部,則隱藏彈出窗時(shí)會(huì)連同截屏組件一起隱藏,所以建議放在外部,并給彈出窗單獨(dú)加一個(gè)div,用showScreenShort控制彈出窗顯示和隱藏。

參數(shù)說(shuō)明:
如示例代碼所示,在template中直接使用screen-short插件,綁定組件需要的事件處理函數(shù)即可。
接下來(lái)就跟大家講下組件中每個(gè)屬性的意義:

screenshotStatus:用于控制組件是否出現(xiàn)在dom中
@destroy-component:用于接收截圖組件傳遞的銷毀消息,我們需要在對(duì)應(yīng)的函數(shù)中銷毀截圖組件
@get-image-data:用于接收截圖組件傳遞的框選區(qū)的base64圖片信息,我們需要為他提供一個(gè)函數(shù)來(lái)接收截圖組件傳遞的消息

可選參數(shù)
截圖插件有一個(gè)可選參數(shù),它接收一個(gè)對(duì)象,對(duì)象每個(gè)key的作用如下:

enableWebRtc:是否啟用webrtc,值為boolean類型,值為false則使用html2canvas來(lái)截圖
level:截圖容器層級(jí),值為number類型
clickCutFullScreen:?jiǎn)螕艚厝羻⒂脿顟B(tài),值為boolean類型,默認(rèn)為false
hiddenToolIco:需要隱藏的截圖工具欄圖標(biāo),值為{save?:boolean;undo?:boolean;confirm?:boolean}類型,默認(rèn)為{}。傳你需要隱藏的圖標(biāo)名稱,將值設(shè)為true即可。
enableCORS:html2canvas截圖模式下跨域的啟用狀態(tài),值為boolean類型,默認(rèn)為false
proxyAddress:html2canvas截圖模式下的圖片服務(wù)器代理地址,值為string類型,默認(rèn)為undefined

1.4在頁(yè)面截圖后使用獲得的64位編碼轉(zhuǎn)為圖片文件形式進(jìn)行上傳

<script setup lang="ts">
const screenshotStatus = ref<boolean>(false);
const destroyComponent = (status:boolean)=>{
	screenshotStatus.value = status;
}
const completeCallback = async (base64data:any)=>{
	const bytes = window.atob(base64data.split(',')[1]);
	const buffer = new ArrayBuffer(bytes.length);
	const uint = ew Uint8Array(buffer);
	for(let j = 0;j<bytes.length:j++){
		uint[j] = bytes.charCodeAt(j);
	}
	const imageFile = new Blob([buffer],{type:'image/jpeg'});
	const formData = new FormData();
	formData.append('file',imageFile,`${Data.now()}.jpeg`);
	const res = await fileUpload(formData);
	if(res.status){
		curPicToken.value = res.data.fileToken;
		issueForm.fileList = [];
		issueForm.fileList.push({
			url:`/api/sys-storage/download_image?f8s=${res.data.fileToken]`,
		})
	}
}
const handleButtonClick = (event:Event):Promise<FileList>|void=>{
	event.preventDefault();
	screenshotStatus.value = true;
}
</script>

2.參考鏈接:

vue-web-screen-shot 前端實(shí)現(xiàn)頁(yè)面截圖:https://blog.csdn.net/w1060436872/article/details/129065847

arco.design—上傳 Upload:https://arco.design/vue/component/upload文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-755665.html

到了這里,關(guān)于vue3插件——vue-web-screen-shot——實(shí)現(xiàn)頁(yè)面截圖功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue3使用vue-masonry插件實(shí)現(xiàn)瀑布流

    vue3使用vue-masonry插件實(shí)現(xiàn)瀑布流

    《Vue插件》瀑布流插件vue-masonry的使用與踩坑記錄 參數(shù): item-selector transition-duration column-width origin-left origin-top gutter 前言: 之前其實(shí)有分享過(guò)一篇純CSS實(shí)現(xiàn)瀑布流的方法: https://oliver.blog.csdn.net/article/details/126450691,但純CSS實(shí)現(xiàn)的方案都不是比較好的方案,總歸有一些各式各樣的

    2024年01月19日
    瀏覽(33)
  • vue3中的吸頂導(dǎo)航交互實(shí)現(xiàn) | VueUse插件

    vue3中的吸頂導(dǎo)航交互實(shí)現(xiàn) | VueUse插件

    目的:瀏覽器上下滾動(dòng)時(shí),若距離頂部的滾動(dòng)距離大于78px,吸頂導(dǎo)航顯示,小于78px隱藏。使 用vueuse插件中的 useScroll方法 ??????? 和 動(dòng)態(tài)類名控制 進(jìn)行實(shí)現(xiàn) 項(xiàng)目中導(dǎo)入,解構(gòu)出 useScroll方法的其他參數(shù): 參考:useScroll | VueUse中文文檔 (vueusejs.com)

    2024年02月09日
    瀏覽(18)
  • vue3 實(shí)現(xiàn)門戶網(wǎng)站頁(yè)面鼠標(biāo)滾輪控制頁(yè)面上下滾動(dòng)---類似輪播圖

    案例參考:首頁(yè)_CNESA 儲(chǔ)能研究平臺(tái) //監(jiān)聽(tīng)鼠標(biāo)滾動(dòng)事件 ?window.addEventListener(\\\'mousewheel\\\', debounce(methodB,300), true)||window.addEventListener(\\\"DOMMouseScroll\\\",debounce(methodB,300),false) const debounce = (func, wait) ={ ? ? ? ? let timeout; ? ? ? ? return ?function() { ? ? ? ? ? ? let context = this; ? ? ? ? ? ?

    2024年02月12日
    瀏覽(172)
  • vue3如何實(shí)現(xiàn)點(diǎn)擊不同的菜單頁(yè)切換局部頁(yè)面

    vue3如何實(shí)現(xiàn)點(diǎn)擊不同的菜單頁(yè)切換局部頁(yè)面

    我們可以使用router來(lái)實(shí)現(xiàn) 去餓了么(element-plus)找到自己喜歡的頁(yè)面然后按需導(dǎo)入,以下以自己的例子來(lái)實(shí)現(xiàn) 首先引入布局容器 然后引入菜單欄 引入這兩個(gè),先看效果 此時(shí)基本的頁(yè)面準(zhǔn)備好了 容器是有這個(gè)屬性的,但默認(rèn)值為false 并把菜單欄里對(duì)應(yīng)的文字改為router-link 在

    2024年02月16日
    瀏覽(21)
  • vue3前端實(shí)現(xiàn)全屏顯示,元素垂直填滿頁(yè)面

    1、 toggleFullscreen方法實(shí)現(xiàn)選定元素全屏展示 2、使用flex屬性+ flex-direction 實(shí)現(xiàn)垂直布局填滿整個(gè)頁(yè)面

    2024年01月16日
    瀏覽(33)
  • vue3 使用 mitt 插件實(shí)現(xiàn)非父子組件傳值

    介紹 : mitt 是一個(gè) JavaScript 庫(kù),用于實(shí)現(xiàn)事件的訂閱和發(fā)布 1、安裝 2、新建 utils/eventBus.ts 文件 3、使用

    2024年02月09日
    瀏覽(26)
  • vue3+axios+router實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)及登錄

    vue3+axios+router實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)及登錄

    本篇文章主要是,使用 vite 創(chuàng)建一個(gè)vue3 書(shū)籍商城的小型案例,項(xiàng)目中主要運(yùn)用到路由router及接口axios等知識(shí)點(diǎn)。 1.開(kāi)始搭建項(xiàng)目框架,使用vite來(lái)構(gòu)建項(xiàng)目 2.由于vite構(gòu)建的項(xiàng)目中需要自己手動(dòng)下載路由以及創(chuàng)建路由文件夾,所以在創(chuàng)建好的項(xiàng)目文檔中找到src文件夾,在src文件

    2024年02月04日
    瀏覽(23)
  • vue3中如何實(shí)現(xiàn)通過(guò)點(diǎn)擊不同的按鈕切換不同的頁(yè)面

    vue3中如何實(shí)現(xiàn)通過(guò)點(diǎn)擊不同的按鈕切換不同的頁(yè)面

    完成以上需求,我們可以使用vue中的component標(biāo)簽來(lái)實(shí)現(xiàn)。 component是Vue.js中一個(gè)特殊的標(biāo)簽,用于動(dòng)態(tài)地綁定其它組件。它可以與v-bind:is指令一起使用,來(lái)決定要渲染哪個(gè)組件。下面是示例代碼

    2024年02月09日
    瀏覽(31)
  • vue3+antd——實(shí)現(xiàn)App.vue頁(yè)面實(shí)時(shí)獲取權(quán)限+用戶信息的功能——基礎(chǔ)積累

    之前寫過(guò)一篇文章關(guān)于vue3+antd的框架模板,鏈接如下:http://t.csdn.cn/9dZMS 下面針對(duì) App.vue 頁(yè)面實(shí)時(shí)獲取權(quán)限+用戶信息的功能做一下記錄 重要的代碼如下: 通過(guò) computed 計(jì)算屬性進(jìn)行用戶信息的實(shí)時(shí)監(jiān)聽(tīng),用戶信息更改時(shí)也會(huì)重新觸發(fā)user參數(shù)的變化,最終導(dǎo)致user內(nèi)容保持為最

    2024年02月14日
    瀏覽(29)
  • 基于vscode實(shí)現(xiàn)vue3項(xiàng)目創(chuàng)建啟動(dòng)+安裝配置路由vue-router實(shí)現(xiàn)單頁(yè)面組件切換

    基于vscode實(shí)現(xiàn)vue3項(xiàng)目創(chuàng)建啟動(dòng)+安裝配置路由vue-router實(shí)現(xiàn)單頁(yè)面組件切換

    訪問(wèn)https://nodejs.org/en,點(diǎn)擊下載最新版本的nodejs,并安裝。 在項(xiàng)目目錄文件下,通過(guò)cmd運(yùn)行下述指令。 依次輸入下列命令,啟動(dòng)vue項(xiàng)目 在瀏覽器中加載http://localhost:5173/,頁(yè)面加載成功,說(shuō)明vue項(xiàng)目安裝啟動(dòng)成功。 建議安裝第三方庫(kù)通過(guò)vscode中的終端來(lái)操作,項(xiàng)目啟動(dòng)通過(guò)

    2024年02月03日
    瀏覽(97)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包