JavaScript實(shí)現(xiàn)頁(yè)面截圖3種解決方案
1.html2canvas
npm install html2canvas
// 引入html2canvas庫(kù)
import html2canvas from 'html2canvas';
// 設(shè)置定時(shí)器,每隔10秒執(zhí)行一次截圖操作
setInterval(async () => {
try {
// 將網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換為canvas元素
const canvas = await html2canvas(document.body);
// 將canvas元素轉(zhuǎn)換為圖片文件base64
const img = canvas.toDataURL('image/png');
// 圖片文件img 處理上床后端
} catch (error) {
console.error('截圖失?。?, error);
}
}, 10000);
2、獲取屏幕流轉(zhuǎn)為圖片
async function screenshot() {
// 獲取屏幕流
const displayMediaOptions = {
video: {
cursor: "always"
}
};
const stream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
// 創(chuàng)建一個(gè)video元素來(lái)播放屏幕流
const video = document.createElement('video');
video.srcObject = stream;
await video.play();
// 創(chuàng)建一個(gè)canvas元素來(lái)截屏
const canvas = document.createElement('canvas');
canvas.width = video.videoWidth;
canvas.height = video.videoHeight;
// 將視頻播放的內(nèi)容繪制到canvas上
const context = canvas.getContext('2d');
context.drawImage(video, 0, 0, canvas.width, canvas.height);
// 將canvas內(nèi)容轉(zhuǎn)換為base64
const base64 = canvas.toDataURL();
// 關(guān)閉視頻流
video.srcObject.getTracks().forEach((track) => track.stop());
return base64;
}3、讓使用者在瀏覽器插件再去調(diào)用插件(不推薦)
總結(jié)
到此這篇關(guān)于JavaScript實(shí)現(xiàn)頁(yè)面截圖3種解決方案的文章就介紹到這了,更多相關(guān)js頁(yè)面截圖解決方案內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript監(jiān)聽(tīng)和禁用瀏覽器回車事件實(shí)例
這篇文章主要介紹了JavaScript監(jiān)聽(tīng)和禁用瀏覽器回車事件實(shí)例,本文直接給出示例代碼,需要的朋友可以參考下2015-01-01
javascript當(dāng)中的代碼嗅探擴(kuò)展原生對(duì)象和原型(prototype)
如果不是有特殊需要而去擴(kuò)展原生對(duì)象和原型(prototype)的做法是不好的,除非這樣做是值得的,例如,向一些舊的瀏覽器中添加一些ECMAScript5中的方法2013-01-01
學(xué)習(xí)使用Bootstrap頁(yè)面排版樣式
這篇文章主要教大家學(xué)習(xí)使用Bootstrap頁(yè)面排版樣式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
一文詳細(xì)分析前端請(qǐng)求中的“Unsupported?Media?Type”問(wèn)題
在Web開(kāi)發(fā)中,前后端交互頻繁遇到HTTP狀態(tài)碼415錯(cuò)誤,這表明服務(wù)器無(wú)法處理因Content-Type不匹配的請(qǐng)求,常見(jiàn)于POST或PUT請(qǐng)求,必須確保請(qǐng)求頭中的Content-Type與服務(wù)器期望的一致,跨域請(qǐng)求中,需要的朋友可以參考下2024-10-10
不同編碼的頁(yè)面表單數(shù)據(jù)亂碼問(wèn)題解決方法
這篇文章主要介紹了不同編碼的頁(yè)面表單數(shù)據(jù)亂碼問(wèn)題解決方法,本文使用一個(gè)表單不常用屬性accept-charset解決了這個(gè)問(wèn)題,需要的朋友可以參考下2015-02-02
JavaScript設(shè)計(jì)模式之工廠方法模式介紹
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之工廠方法模式介紹,本文講解了簡(jiǎn)單工廠模式、多個(gè)工廠方法模式等內(nèi)容,需要的朋友可以參考下2014-12-12

