<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>截图指定元素</title>
<style>
.content {
width: 500px;
height: 500px;
border: 1px solid red;
}
</style>
</head>
<body>
<div class="box">
<button class="btn">截图</button>
<div class="content">
<video crossorigin class="videoBox" style="width: 100%; height: 100%;" controls autoplay loop
src="xxxx"></video>
</div>
<div style="width: 0; height: 0;"><canvas class="canvas"></canvas></div>
<img src="" alt="">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.2/html2canvas.min.js"></script>
<script>
const btn = document.querySelector('.btn')
const content = document.querySelector('.content')
const img = document.querySelector('img')
const video = document.querySelector('.videoBox');
btn.onclick = async () => {
try {
video.pause()
const canvas = document.querySelector('.canvas');
canvas.width = 300;
canvas.height = 500;
const ctx = canvas.getContext('2d');
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
// 使用 html2canvas 进行截图
html2canvas(canvas).then(canvas => {
const img = document.querySelector('img');
img.src = canvas.toDataURL('image/png');
console.log(canvas.toDataURL('image/png'));
});
} catch (error) {
console.error('截图失败:', error);
}
}
</script>
</body>
</html>
截图失败需要video标签加上crossorigin解决跨域