【技术】JS 操作剪贴板

2024-06-17 05:04
文章标签 技术 操作 js 剪贴板

本文主要是介绍【技术】JS 操作剪贴板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JS 操作剪贴板

  • 1、原生 JS 操作剪贴板复制文本
  • 2、原生 JS 操作剪贴板读取图片实现异步上传
    • navigator 对象
    • 监听粘贴事件
  • 3、剪贴板插件

1、原生 JS 操作剪贴板复制文本

在博客类网站看到一段代码,想复制,如果代码量比较大,选中内容复制会比较麻烦。多数情况下会在代码右上角看到一个复制按钮,点击即可复制代码,是如何实现的呢?

准备一个按钮,样式可以自定,绑定一个单击事件

<button type="button" onclick="copyVal()">复制</button>
<div class="content">这里是一段文字...</div>

编写 copyVal() 方法

<script>function copyVal(){// 获取内容的组件let content = document.querySelector(".content");// 选中组件内容window.getSelection().selectAllChildren(content);// 执行拷贝命令document.execCommand("Copy");}
</script>

2、原生 JS 操作剪贴板读取图片实现异步上传

navigator 对象

navigator 对象在使用时有弊端,仅在安全域环境下生效。安全域环境是指:https 请求、localhost、127.0.0.1 作为请求的情况。如果是 IP 地址访问则会出现 navigator.clipboard 是 underfind 的情况。原因是浏览器的安全限制,不希望代码随意访问用户的剪贴板。不过可以采用另外一种方案解决。

async function getImageFromClipboard() {try {// 异步读取剪贴板内容let clipboardItems = clipboardItems = await navigator.clipboard.read();// 遍历剪贴板for (const clipboardItem of clipboardItems) {// 获取剪贴板内容类型for (const type of clipboardItem.types) {// 图片格式判断if (type === 'image/png' || type === 'image/jpeg') {// 获取图片元数据const blob = await clipboardItem.getType(type);// 创建文件读取对象const reader = new FileReader();// 文件读取成功reader.onload = (e) => {// 创建图片文件对象const img = new Image();// 把图片添加到页面元素中$(".img-box")[0].appendChild(img);};// 将数据读取为数据URLreader.readAsDataURL(blob);/* 异步上传图片 */// 构建文件对象,传递 blob 参数const file = new File([blob], "pasted-image." + type.split("/")[1], {type: type,});// 构建表单对象var formData = new FormData();formData.append('files', file);formData.append('language', $("#language").val());ajaxUpload(formData);/* 异步上传图片 */} else {alert("剪贴板最近内容不是图片!");return;}}}} catch (error) {console.error('Failed to read clipboard contents:', error);}
}
/*** 通过表单提交*/
function ajaxUpload(data){$.ajax({url: "/upload",type: "post",cache: false,data: data,processData: false,// 不处理数据contentType: false, // 不设置内容类型dataType: "json",success: function (data) {console.log("请求成功:", data);// 这里是请求成功的业务逻辑},error: function () {console.log("请求失败!")}});
}

监听粘贴事件

navigator 对象的使用弊端可以曲线救国,通过监听粘贴事件实现相关业务。

document.onpaste = function(event){try {// 获取剪贴板的元素集合var items = (event.clipboardData || event.originalEvent.clipboardData).items;// 遍历剪贴板元素for (var i = 0 ; i < items.length ; i++) {var item = items[i];// 判断图片类型if (item.type.indexOf("image") != -1) {// 元素转换为文件对象var file = item.getAsFile();/* 图片展示到页面 */// 创建读取文件组件(JS内置对象)var fr = new FileReader();// 读取文件fr.readAsDataURL(file);// 当数据读取完成的触发一个事件fr.onload = function () {// 获取文件数据var url = fr.result;let img = `<img src="${url}" id="showImg"/>`;// 把图片展示到页面$(".img-box").append(img);}/* 图片展示到页面 *//* 异步上传图片 */// 构建表单对象var formData = new FormData();// 表单添加文件,注意第一个参数是传递数据的 key,也就是 input file 的 name 属性的值formData.append('files', file);ajaxUpload(formData);/* 异步上传图片 */break;}}} catch (error) {console.error('Failed to read clipboard contents:', error);}
}

3、剪贴板插件

因为代码兼容问题,可以使用剪贴板插件:https://clipboardjs.com/

这篇关于【技术】JS 操作剪贴板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE