Web API - Clipboard

Clipboard API ,它允许我们与用户的剪贴板进行交互,实现复制和粘贴的功能。

Clipboard API 提供了以下方法,用于实现复制和粘贴:

  1. navigator.clipboard.writeText(text):这个方法用于将给定的文本复制到剪贴板。如果操作成功完成,它会返回一个已解析的 Promise。我们可以使用 await 来等待复制操作完成,或者使用 then 和 catch 来处理异步操作的结果。
  2. navigator.clipboard.write(data) :这个方法用于写入更复杂的数据类型,如文件、图像等。如果操作成功完成,它会返回一个已解析的 Promise。
  3. navigator.clipboard.readText():这个方法用于从剪贴板读取文本内容。它会返回一个 Promise,Promise 解析后会提供剪贴板中的文本内容。
  4. navigator.clipboard.read():这个方法用于读取更复杂的数据类型,如文件、图像等。它会返回一个 Promise,Promise 解析后会提供剪贴板中的数据。

粘贴复制文本
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Clipboard API 示例</title><style>#output {border: 1px solid #ccc;padding: 10px;margin-top: 10px;}</style></head><body><h1>Clipboard API 示例</h1><input type="text" id="inputField" placeholder="输入要复制的文本"><button id="copyButton">复制文本到剪贴板</button><button id="pasteButton">从剪贴板粘贴文本</button><div id="output">粘贴的文本将显示在这里。</div><script>const copyButton = document.getElementById('copyButton');const pasteButton = document.getElementById('pasteButton');const inputField = document.getElementById('inputField');const output = document.getElementById('output');// 复制文本到剪贴板copyButton.addEventListener('click', async () => {const text = inputField.value;if (text.trim() === '') {alert('请输入要复制的文本。');return;}try {await navigator.clipboard.writeText(text);alert('文本已复制到剪贴板!');} catch (error) {console.error('复制失败:', error);alert('复制失败,请手动复制。');}});// 从剪贴板粘贴文本pasteButton.addEventListener('click', async () => {try {const text = await navigator.clipboard.readText();output.textContent = `粘贴的文本:${text}`;} catch (error) {console.error('粘贴失败:', error);alert('粘贴失败,请手动输入。');}});</script></body>
</html>
粘贴复制图片
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Clipboard Image Example</title><style>img {width: 50%;}</style>
</head><body><h1>Clipboard Image Example</h1><img id="sourceImage" src="./bing0509.png" alt="Sample Image"><br /><button id="copyImageButton">复制图片</button><button id="pasteImageButton">粘贴图片</button><div id="imageDisplay"></div><script>const copyImageButton = document.getElementById('copyImageButton');const pasteImageButton = document.getElementById('pasteImageButton');const sourceImage = document.getElementById('sourceImage');const imageDisplay = document.getElementById('imageDisplay');// 复制图片到剪贴板copyImageButton.addEventListener('click', async () => {try {const response = await fetch(sourceImage.src);const blob = await response.blob();const item = new ClipboardItem({ 'image/png': blob });await navigator.clipboard.write([item]);alert('图片已复制到剪贴板!');} catch (err) {console.error('无法复制图片到剪贴板:', err);}});// 从剪贴板粘贴图片pasteImageButton.addEventListener('click', async () => {try {const clipboardItems = await navigator.clipboard.read();for (const clipboardItem of clipboardItems) {const types = clipboardItem.types;if (types.includes('image/png')) {const blob = await clipboardItem.getType('image/png');const imageUrl = URL.createObjectURL(blob);const img = document.createElement('img');img.src = imageUrl;imageDisplay.appendChild(img);alert('图片已从剪贴板粘贴!');break;}}} catch (err) {console.error('无法从剪贴板粘贴图片:', err);}});</script>
</body></html>

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

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

相关文章

MySQL 利用JSON特性完成复杂数据存储和查询

情景描述 下面一个应用场景&#xff0c;是数据库需要存储文库类的信息。文库分多个种类&#xff0c;比如图书类、论文类等多个类别&#xff0c;每个类别有不同的字段信息。 常规处理方法 要在单张表中去存储不同种类的文库数据&#xff0c;表就会变成这样的结构&#xff1a; …

【数据结构】哈希 ---万字详解

unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到log_2 N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好 的查询是&#xff0c…

单例模式的理解和实践

在软件开发中&#xff0c;设计模式是开发者在特定情境下&#xff0c;对常见问题的通用解决方案。这些模式帮助开发者以更高效、可维护的方式编写代码。其中&#xff0c;单例模式&#xff08;Singleton Pattern&#xff09;是一种创建型设计模式&#xff0c;它确保一个类只有一个…

zerotier实现内网穿透

zerotier的内网穿透 前言一、zerotier的框架认知二、客户端安装设置1.linux2.windows 前言 摸索了一阵&#xff0c;看了好几篇&#xff0c;没有讲清楚。争取这次说清楚。 一、zerotier的框架认知 先认识一下zerotier的框架&#xff0c;这样如何处理就很好理解了。 首先上zero…

windows11 使用体验记录

好的地方&#xff1a; UI上字体风格貌似更好看了&#xff0c;文件夹增加了多个标签&#xff0c;类似于浏览器既可以打开多个窗口&#xff0c;也可以在同一个窗口中打开多个标签页 不好的地方&#xff1a; 桌面右下角点击日期时间&#xff0c;显示日期&#xff0c;时间呢&…

牛客周赛 Round 70 A-E

本期封面原图 画师村カルキ 牛客周赛 Round 70 五题 A - 小苯晨跑 思路 没啥好说的 代码 // // Created by Swan416 on 2024-12-01 18:57. // #include <bits/stdc.h> #define maxOf(a) *max_element(a.begin(),a.end()) #define minOf(a) *min_element(a.begin(),a.…

C++20: 像Python一样split字符串

概要 Python 的字符串天生支持 split( ) 操作&#xff0c;支持单个字符或字符串作为分隔符。 C 在这方面显得很笨拙&#xff0c;但是在 C20 下经过一番尝试&#xff0c;还是能够提供类似的简洁调用。 Python 代码 s 0,11,336,23,370nums s.split(,) for n in nums:print(n…

oracle数据库日常操作

1、执行SQL语句后不显示PL/SQL procedure successfully completed set feedback off; 2、显示实例名称 echo "set sqlprompt \"_user_connect_identifier> \"" >> $ORACLE_HOME/sqlplus/admin/glogin.sql 3、客户端尝试连接到服务器时发生超时 …

【Redis篇】Hash的认识以及相关命令操作

目录 前言 基本命令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY HINCRBYFLOAT 内部编码 高内聚&#xff0c;低耦合 前言 可以看出&#xff1a; Redis 的 Hash 是一个键&#xff08;key&#xff09;下包含多个字段&#xff08;field…

可解释机器学习 | Python实现LGBM-SHAP可解释机器学习

机器学习 | Python实现GBDT梯度提升树模型设计 目录 机器学习 | Python实现GBDT梯度提升树模型设计基本介绍模型使用参考资料基本介绍 LightGBM(Light Gradient Boosting Machine)是一种基于决策树的梯度提升框架,是一种高效的机器学习模型。SHAP(SHapley Additive exPlan…

<回文判断>

【问题描述】 回文是正读和倒读都一样的句子。读入一个最大长度不超过50个字符的句子&#xff0c;判断其是否是回文。 【输入形式】 输入一个最大长度不超过50个字符的句子 【输出形式】 Yes/No 【输入样例】 abcba 【输出样例】 Yes 【样例说明】 输入abcba&#xff0c;判…

VPP多架构处理器支持

对于转发层面的关键节点&#xff08;node&#xff09;&#xff0c;VPP针对处理器架构编译多份代码&#xff0c;在运行时检测处理器架构&#xff0c;动态确定使用的代码分支。VPP提供两种对多处理器架构的支持&#xff0c;除了节点函数外&#xff0c;还可指定任意函数支持多架构…

算法2--滑动窗口

滑动窗口 滑动窗口经典例题长度最小的子数组无重复字符的最长子串[最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)[将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description…

mysql--二进制安装编译安装yum安装

二进制安装 创建用户和组 [rootlocalhost ~]# groupadd -r -g 306 mysql [rootlocalhost ~]# useradd -r -g 306 -u 306 -d /data/mysql mysql 创建文件夹并添加所属文件用户和组 [rootlocalhost ~]# mkdir -p /data/mysql [rootlocalhost ~]# chown mysql:mysql /data/mysql …

大模型开发和微调工具Llama-Factory-->WebUI

WebUI LLaMA-Factory 支持通过 WebUI 零代码微调大模型。 通过如下指令进入 WebUI llamafactory-cli webui# 如果是国内&#xff0c; # USE_MODELSCOPE_HUB 设为 1&#xff0c;表示模型从 ModelScope 魔搭社区下载。 # 避免从 HuggingFace 下载模型导致网速不畅 USE_MODELSC…

【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格

问题&#xff1a;实现如下图的效果 解答&#xff1a; 一、函数 IFERROR(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))),(ROW(A1)-1)*LEN($A$2)1,LEN($A$2))),"") 二、在单元格C2中填写如下函数 三、全选要填充的单元格并且按CTRLD 函数…

Java有关数组的相关问题

Java中的栈和堆的含义 栈 存储局部变量&#xff1a;栈主要用于存储方法中的局部变量&#xff0c;包括基本数据类型&#xff08;int、double、boolean等&#xff09;和对象的引用&#xff08;不包含对象本身&#xff09;。 遵循后进先出原则&#xff1a;当一个方法被调用时&…

提升阅读体验,Balabolka让文字跃然“声”上

作为一个专业的语音合成工具&#xff0c;Balabolka为用户提供了全方位的文本朗读解决方案。这款软件不仅可以将各类文本实时转换为清晰的语音输出&#xff0c;还能将转换后的音频内容导出为多种主流格式。它强大的兼容性使其能够处理各类电子书和文档格式&#xff0c;让用户可以…

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题

解决`-bash: ./configure:/bin/sh^M:解释器错误: 没有那个文件或目录`的问题 一、错误原因分析二、解决方法方法一:使用`dos2unix`工具方法二:使用`sed`命令方法三:使用`tr`命令方法四:在文本编辑器中转换方法五:在Windows系统中使用适当的工具三、预防措施四、总结在使…

第一部分:基础知识 1. 介绍 --[MySQL轻松入门教程]

什么是MySQL&#xff1f; MySQL 是一种广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它使用结构化查询语言&#xff08;SQL&#xff09;来管理数据。MySQL 由瑞典公司 MySQL AB 开发&#xff0c;现在归 Oracle Corporation 所有。MySQL 是开源软件…