js 页面截图三种解决方案

1.html2canvas

npm install html2canvas

// 引入html2canvas库
import html2canvas from 'html2canvas';// 设置定时器,每隔10秒执行一次截图操作
setInterval(async () => {try {// 将网页内容转换为canvas元素const canvas = await html2canvas(document.body);// 将canvas元素转换为图片文件base64const img = canvas.toDataURL('image/png');// 图片文件img 处理上床后端} catch (error) {console.error('截图失败:', error);}
}, 10000);

2、获取屏幕流转为图片

async function screenshot() {  // 获取屏幕流  const displayMediaOptions = {  video: {  cursor: "always"  }  };  const stream = await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);  // 创建一个video元素来播放屏幕流  const video = document.createElement('video');  video.srcObject = stream;  await video.play();  // 创建一个canvas元素来截屏  const canvas = document.createElement('canvas');  canvas.width = video.videoWidth;  canvas.height = video.videoHeight;  // 将视频播放的内容绘制到canvas上  const context = canvas.getContext('2d');  context.drawImage(video, 0, 0, canvas.width, canvas.height);  // 将canvas内容转换为base64  const base64 = canvas.toDataURL();  // 关闭视频流  video.srcObject.getTracks().forEach((track) => track.stop());  return base64;  
}

3、让使用者在浏览器插件再去调用插件(不推荐)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/185799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python武器库开发-前端篇之JavaScript基础语法(三十四)

前端篇之JavaScript基础语法(三十四) JavaScript的三种引用方式 JavaScript的三种引用方式分别是&#xff1a; 内部引用&#xff08;内联式&#xff09;&#xff1a;将JavaScript代码嵌入到HTML页面中的<script>标签内部。例如&#xff1a; <script type"tex…

通过lua脚本在redis中处理json数据

在日常开发中&#xff0c;系统都会使用redis作为缓存来加快服务的响应&#xff0c;我们通常会将一个对象数据存储在redis中&#xff0c;对象存储通常有两种方案&#xff1a;一种是存储为hash结构&#xff0c;对象的键是属性名&#xff0c;值为属性值&#xff1b;另一种是序列化…

【自动化测试】pytest 用例执行中print日志实时输出

author: jwensh date: 20231130 pycharm 中 pytest 用例执行中 print 日志 standout 实时命令行输出 使用场景 在进行 websocket 接口进行测试的时候&#xff0c;希望有一个 case 是一直执行并接受接口返回的数据 def on_message(ws, message):message json.loads(message)…

NAT网络地址转换

目录 什么是nat nat 实验如何使用SNAT 和 DNAT 实验环境 内网连接外网 1.给网关服务器添加网卡&#xff08;两张网卡&#xff09; 2.查看新添加的网卡名 编辑网卡配置 3.开启路由转发 4.打开内网服务器 5.切换到外网服务器&#xff08;192.168.17.30&#xff0…

JavaScript添加快捷键、取消浏览器默认的快捷操作、js查看键盘按钮keycode值

document.addEventListener("keydown",function (event) {// 如果不知道按键对应的数字&#xff08;keyCode&#xff09;是多少可以弹出查看一下// alert(event.keyCode)if (event.ctrlKey && event.altKey && event.view["0"] null){if(…

[PTP][1588v2] Follow_Up消息

一、报文格式 0------3--------7--------11--------15--------------------------------31 |TranSpec|MsgType|Reserved1| VerPTP | MsgLength | ----------------|------------------|---------------------------------| | DomainNumber | Res…

ZZULIOJ 2521: 文本修正

2521: 文本修正 题目描述 Chika接到了去检查河南省算法竞赛题面的任务&#xff0c;她发现所有单词"Henan"的首字母都没有大写。她需要去修正文本中的所有错误。换句话说&#xff0c;她需要把所有单词"henan"的首字母从"h"替换为"H"&…

LiteOS学习笔记一

LiteOS笔记一 LiteOS简介(转自官方仓库)学习LiteOS的意义LiteOS代码目录IDE建议 LiteOS简介(转自官方仓库) Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。本项目属于华为物联网操作系统[Huawei LiteOS]源码&#xff0c;现有基础内核包括不可裁剪…

MedicalTransformer论文解读

论文是一个分割任务&#xff0c;但这里的方法不局限于分割&#xff0c;运用到检测、分类都可以。 论文下载 https://www.yuque.com/yuqueyonghupjh9oc/ovceh4/onilw42ux6e9n1ne?singleDoc# 《轴注意力机制》 一个问题 为什么transformer一开始都有CNN&#xff1a;降低H、W…

Python list列表添加元素的3种方法及删除元素的3种方法

Python list列表添加元素的3种方法 Python list 列表增加元素可调用列表的 append() 方法&#xff0c;该方法会把传入的参数追加到列表的最后面。 append() 方法既可接收单个值&#xff0c;也可接收元组、列表等&#xff0c;但该方法只是把元组、列表当成单个元素&#xff0c;这…

【综述+自动流量分析A】New Directions in Automated Traffic Analysis

文章目录 论文简介摘要存在的问题论文贡献1. 整体架构2. nPrint3. nPrintML4. 任务 总结论文内容工具数据集可读的引用文献笔记参考文献 论文简介 原文题目&#xff1a;New Directions in Automated Traffic Analysis 中文题目&#xff1a;自动流量分析的新方向 发表会议&#…

85基于Matlab的交通设施识别

基于Matlab的交通设施识别。 GUI设计图像处理, 基于数字图像处理&#xff0c;设计实现一个自然场景下公路交通限速标志分割和识别的程序。要求系统具有界面&#xff0c;并实现以下功能&#xff1a; 1&#xff09;读入自然场景下包含交通标志的图像&#xff1b; 2&#xff09;对…

【网络BSP开发经验】网络流量应用识别技术

文章目录 网络流量应用识别技术背景应用识别基本原理应用识别主流技术方向特征识别技术单报文解析流特征解析 关联识别技术DNS关联识别 行为识别技术 应用识别框架介绍应用特征提取经验tcpdump 抓包方式默认启动监视指定网络接口的数据包监视指定主机的数据包 禁用特征提取加速…

波奇学C++:C++11的可变参数模板和emplace

可变参数模板 // args是参数包 template<class T,class ...Args> void _ShowList(T value, Args... args) {cout << sizeof...(args) << endl; // 2cout << value << " ";/*_ShowList(args...);*/} int main() {_ShowList(1,2,3); re…

前端笔试遇到的坑-100题

1.闭包 let 形成闭包 var全局变量 function test() {for (var i 0; i < 6; i) {console.log(i); //1 2 3 4 5 6// setTimeout(() > {// console.log(i);// }, 0); 6 6 6 6 6 6 6} } test();var array []; for (var i 0; i < 3; i) {array.push(() > i);…

Element UI 实战:跨页保存表格选中状态与判断状态可选性的高效方案

引言 在前文中&#xff0c;我们曾深入探讨了在修改数据后跨页时提醒用户可能丢失数据的问题。虽然这种方式对于一些场景是足够的&#xff0c;但当涉及选择框时&#xff0c;我们需要更为智能和高效的解决方案。在本文中&#xff0c;我们将分享一种基于 Element UI 的实际案例&am…

内模原理与控制

基于模型的控制方法&#xff1a; 把外部作用信号的动力学模型植入控制器来构成高精度反馈控制系统的设计原理。 内模原理&#xff08;IMP&#xff09;指的是&#xff0c;想要实现对R(s)的无差跟踪&#xff0c;系统的反馈回路中需要包含一个与外部输入R(s)相同的动力学模型。通…

数据增广【以图像增广为例】

数据增广/增强&#xff1a; 对一个已有数据集中的数据进行变换&#xff0c;使其有更多的多样性。 数据增广通过通过变形数据来获得多样性从而使得模型的泛化性能更好 例如&#xff1a; 在语言里面加入各种不同的背景噪音改变图片的颜色和形状 增强数据一般在线随机生成&#…

2023-11-30 LeetCode每日一题(确定两个字符串是否接近)

2023-11-30每日一题 一、题目编号 1657. 确定两个字符串是否接近二、题目链接 点击跳转到题目位置 三、题目描述 如果可以使用以下操作从一个字符串得到另一个字符串&#xff0c;则认为两个字符串 接近 &#xff1a; 操作 1&#xff1a;交换任意两个 现有 字符。 例如&…

高并发架构——网页爬虫设计:如何下载千亿级网页?

Java全能学习面试指南&#xff1a;https://javaxiaobear.cn 在互联网早期&#xff0c;网络爬虫仅仅应用在搜索引擎中。随着大数据时代的到来&#xff0c;数据存储和计算越来越廉价和高效&#xff0c;越来越多的企业开始利用网络爬虫来获取外部数据。例如&#xff1a;获取政府公…