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

vue使用html2canvas優(yōu)化---節(jié)點(diǎn)過濾

這篇具有很好參考價(jià)值的文章主要介紹了vue使用html2canvas優(yōu)化---節(jié)點(diǎn)過濾。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

當(dāng)你使用html2canvas對(duì)某個(gè)節(jié)點(diǎn)進(jìn)行截圖時(shí),項(xiàng)目小dom節(jié)點(diǎn)少那還沒什么性能問題,如果是個(gè)大項(xiàng)目,有成百上千個(gè)dom節(jié)點(diǎn),那將是非常頭疼的事情(產(chǎn)品經(jīng)理:小張啊,你這個(gè)截圖功能為什么需要這個(gè)長(zhǎng)的時(shí)間,這讓客戶怎么用,重新改。小張:********...)。不多bb了,直接開始

?

html2canvas的配置項(xiàng)提供了一個(gè)回調(diào)函數(shù)?ignoreElements, 他的作用就是過濾節(jié)點(diǎn)的, html2canvas 他會(huì)對(duì)你的dom樹進(jìn)行循環(huán),每次循環(huán)都會(huì)調(diào)用一次 ignoreElements,ignoreElements接收一個(gè)參數(shù)就是當(dāng)前循環(huán)到的dom , 當(dāng)你返回true就不會(huì)循環(huán)這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)了,意思就是過濾了當(dāng)前節(jié)點(diǎn),反之則保留當(dāng)前節(jié)點(diǎn)繼續(xù)向下循環(huán)。

vue使用html2canvas優(yōu)化---節(jié)點(diǎn)過濾

?

代碼:

 1 function getImages(element){
 2     const canvas = await html2canvas(element, { 
 3         allowTaint: false,
 4         // 因?yàn)閌allowTaint`表示是否允許被污染,而被污染的canvas是沒法使用`toDataURL()`轉(zhuǎn)`base64`流的,但是我們這需要`base64`,所有`allowTaint`需要被設(shè)置為`false`
 5         useCORS: true, // 允許跨域
 6         tainttest: true, // 檢測(cè)每張圖片都已經(jīng)加載完成
 7         logging: true,
 8         ignoreElements:(e)=>{
 9             if(e.contains(element) || element.contains(e) || e.getAttribute('data-html2canvas') != null){
10                 return false
11             }
12             return true
13         },
14         backgroundColor: `rgb(255,255,255)`, // 轉(zhuǎn)換圖片可能會(huì)有白色底色,你可根據(jù)你的頁面或者PM要求設(shè)置一下背景色,不要的話就null
15     })
16 
17     let imgUrl = canvas.toDataURL("image/jpeg");
18     if(imgUrl == 'data:,') return ''
19     console.log(imgUrl);
20     return imgUrl
21 }
element 指的是截取的目標(biāo)節(jié)點(diǎn)

 重點(diǎn)在第9行,
e.contains(element) || element.contains(e)  的意思是當(dāng)前循環(huán)的節(jié)點(diǎn)是目標(biāo)節(jié)點(diǎn)的父級(jí)或子急級(jí),直接一步到位, 速度直接提升80%,可以直接拿去甩到產(chǎn)品經(jīng)理的臉上,他還會(huì)夸你nb。嗯,爽不爽?。?!

e.getAttribute('data-html2canvas') != null 這個(gè)就是在節(jié)點(diǎn)上加了一個(gè) data-html2canvas 屬性,若第3行和第7行
 1 <!DOCTYPE html>
 2 <html lang="zh">
 3   <head data-html2canvas>
 4     <meta charset="utf-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width,initial-
 7     <link data-html2canvas rel="stylesheet" href="css.css" >
 8   </head>
 9   <body>
10     <noscript>
11       <strong>We're sorry but api-gateway-admin-front doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
12     </noscript>
13     <div id="app"></div>
14   </body>
15 </html>
過濾的時(shí)這個(gè)css也會(huì)保留



?文章來源地址http://www.zghlxwxcb.cn/news/detail-524944.html

到了這里,關(guān)于vue使用html2canvas優(yōu)化---節(jié)點(diǎn)過濾的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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)文章

  • angular:html2canvas對(duì)ion-avatar節(jié)點(diǎn)渲染不正確

    問題: ? ? ? ? 如題 解決辦法: ? ? ? ? 簡(jiǎn)單實(shí)現(xiàn)頭像遮罩 ? ? ? ? 從實(shí)際效果來看,ion-avatar做了一些優(yōu)化,在縮小圖片時(shí),細(xì)節(jié)顯示的更楚,而普通的img是稍模糊些的。 ? ? ? ? 具體原因得看源碼,暫時(shí)定位到object-fit無法在canvas2html中體現(xiàn)

    2024年02月09日
    瀏覽(17)
  • vue2 -- 截圖工具h(yuǎn)tml2canvas

    可以將網(wǎng)頁中的指定元素或整個(gè)頁面截取為圖片,以便保存或分享。 在 Vue 中使用 html2canvas 實(shí)現(xiàn) 1:安裝 html2canvas 庫。你可以使用 npm 安裝,命令如下: 2:在需要使用 html2canvas 的 Vue 組件中,引入 html2canvas 庫: :3:編寫截圖邏輯。你可以在組件的方法中編寫,例如:

    2024年01月19日
    瀏覽(29)
  • html2canvas使用文檔

    Install NPM Install Yarn 以 vue 舉例,這樣寫起來比較方便 如果想要將圖片導(dǎo)出,可以這樣寫 名稱 默認(rèn)值 描述 allowTaint false 是否允許跨源圖像污染畫布 backgroundColor #ffffff 畫布背景色(如果在DOM中未指定),為透明設(shè)置null canvas null 用作繪圖基礎(chǔ)的現(xiàn)有畫布元素 foreignObjectRendering

    2024年03月28日
    瀏覽(21)
  • vue-element使用html2canvas實(shí)現(xiàn)網(wǎng)頁指定區(qū)域(指定dom元素)截圖

    直接上代碼: ** 如果要截取的dom元素、區(qū)域涉及到v-if或者v-show的條件表達(dá)式時(shí),截取的方法請(qǐng)?jiān)趎extTick里面調(diào)用----例如: this.$nextTick(() = { this.saveImageNew() }) 否之獲取dom元素的時(shí)候會(huì)獲取不到!?。。。。。?!

    2024年02月04日
    瀏覽(28)
  • html2canvas使用指南

    html2canvas使用指南

    ? 最近項(xiàng)目中需要使用到將網(wǎng)頁中的內(nèi)容下載成圖片,通過按鈕點(diǎn)擊將頁面保存下來,方便同事使用進(jìn)行工作匯報(bào)。如圖: 然后我想到了 html2canvas ,就可以解決我現(xiàn)在遇到的問題了。我火速從官網(wǎng)下載了js文件,這里附上鏈接: ? http://html2canvas.hertzen.com/ ?這里 ? html2canvas

    2024年02月14日
    瀏覽(21)
  • vue中使用html2canvas報(bào)錯(cuò) Unable to find element in cloned iframe

    vue中使用html2canvas報(bào)錯(cuò) Unable to find element in cloned iframe

    安裝 npm install --save html2canvas 使用 home.vue !!報(bào)錯(cuò) Uncaught (in promise) Unable to find element in cloned iframe 原因:使用了 elementUI中的el-popover組件,掛載到body里的 解決:

    2024年01月19日
    瀏覽(113)
  • 解決使用 html2canvas 截圖不全問題

    解決使用 html2canvas 截圖不全問題

    1、截圖不全 之前沒用過這個(gè),網(wǎng)上找了代碼之后發(fā)現(xiàn)有滾動(dòng)條的情況下會(huì)截圖不全,僅能展示出當(dāng)前頁面展示出來的內(nèi)容,類似于這種情況,這是帶滾動(dòng)條的html,第一張和第二張分別為滾動(dòng)條在頂部以及在底部的展現(xiàn) 下載成pdf之后分別為這樣,只有窗口展示的部分,滾動(dòng)條

    2024年02月11日
    瀏覽(27)
  • vue使用html2canvas實(shí)現(xiàn)一鍵截圖并賦值到剪貼板,只截取當(dāng)前顯示器上可視的內(nèi)容

    vue使用html2canvas實(shí)現(xiàn)一鍵截圖并賦值到剪貼板,只截取當(dāng)前顯示器上可視的內(nèi)容

    使用 html2canvas 和 clipboard API 實(shí)現(xiàn)整頁截圖并填充至剪切板。 訪問剪切板的api只支持在https或者本地localhost上使用,如果是http,則無法使用 首先需要從npm安裝html2canvas 然后在代碼中導(dǎo)入這個(gè)包: 之后綁定一個(gè)按鈕來實(shí)現(xiàn)該功能,比如點(diǎn)擊一個(gè)按鈕,然后就開始截圖當(dāng)前頁面并

    2024年02月15日
    瀏覽(29)
  • 【vue-qrcode + html2canvas】前端二維碼生成與下載

    【vue-qrcode + html2canvas】前端二維碼生成與下載

    其實(shí)一開始搜的時(shí)候,很多還都是推薦的 vue-qrcode ,于是就先用這個(gè),但是發(fā)現(xiàn)想要在二維碼中間放一個(gè)自定義的image的時(shí)候,這個(gè)庫有點(diǎn)麻煩,需要自己將 image 圖片蓋在二維碼上面(官方教程也是如此)。好吧,一開始我也這么干了,但是蓋完之后,我需要下載這個(gè)有居中

    2024年04月17日
    瀏覽(38)
  • vue2如何將頁面生成 pdf 導(dǎo)出 html2Canvas + jspdf

    vue2如何將頁面生成 pdf 導(dǎo)出 html2Canvas + jspdf

    npm i html2canvas npm i jspdf import html2canvas from \\\'html2canvas\\\'; import jsPDF from \\\'jspdf\\\' export const htmlToPDF = async (htmlId, title = \\\"報(bào)表\\\", bgColor = \\\"#fff\\\") = { ? let pdfDom = document.getElementById(htmlId) ? pdfDom.style.padding = \\\'0 10px !important\\\' ? const A4Width = 595.28; ? const A4Height = 841.89; ? let canvas = await html2canvas(pd

    2024年02月16日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包