首页 > 其他分享 >Web应用实现读取写入剪贴板功能几种方式

Web应用实现读取写入剪贴板功能几种方式

时间:2023-10-19 19:24:22浏览次数:36  
标签:Web 剪贴板 读取 textarea text clipboard Clipboard error

 

Clipboard 接口实现了 Clipboard API,如果用户授予了相应的权限,其就能提供系统剪贴板的读写访问能力。在 Web 应用程序中,Clipboard API 可用于实现剪切、复制和粘贴功能。

参考: https://developer.mozilla.org/zh-CN/docs/Web/API/Clipboard

Clipboard API 包括两个主要的接口:Clipboard 和 DataTransfer。Clipboard 接口用于操作系统剪贴板(例如 Windows 或 macOS 中的剪贴板),它包含以下方法:

  • writeText(text: string): Promise<void>:将文本复制到剪贴板。
  • readText(): Promise<string>:从剪贴板读取文本。

以下示例可直接使用,亲测有效

1、以下是一个使用 Clipboard 接口将文本剪贴板复制粘贴的示例:更多参考

<script>
  // 将文本复制到剪贴板
  navigator.clipboard
    .writeText("Hello, World! Write")
    .then(() => console.log("Text copied to clipboard"))
    .catch((error) => console.error("Failed to copy text: ", error));

  // 从剪贴板中读取数据
  navigator.clipboard
    .readText()
    .then((text) => console.log("Text read from clipboard: ", text))
    .catch((error) => console.error("Failed to read text from clipboard: ", error) );
</script>

 

2、实例Clipboard对象,使用html标签 data-clipboard-target 需要点击触发。


<script type='text/javascript' src="https://cdn.staticfile.org/clipboard.js/1.5.15/clipboard.min.js"></script> <div id="foo">独孤那点事儿</div> <a class="btn" href="javascript:" data-clipboard-target="#foo" rel="noopener noreferrer">复制</a> <script type="text/javascript"> var clipboard = new Clipboard('.btn'); clipboard.on('success', function(e) { console.info('Success---:', e); e.clearSelection(); }); clipboard.on('error', function(e) { console.error('Error---:', e.action); }); </script>
<script type="text/javascript">
  function copyText()
    {
        var text = document.getElementById("mytext").innerText;
        var einput = document.createElement('input');
        oInput.value = text;
        document.body.appendChild(einput);
        oInput.select(); // 选择对象
        document.execCommand("Copy"); // 执行浏览器复制命令
        oInput.className = 'einput';
        oInput.parentNode.removeNode(einput);
        alert('复制成功');
    }
</script>
<div cols="20" id="mytext">I am text: 12345678</div>
<input type="button" onClick="copyText()" value="点击复制代码" />

 

无感触发复制粘贴效果: 创建一个textarea元素,将要写入的内容放入textarea里,然后选择input,再调用浏览器的复制命令,将textarea里的内容复制,最后隐藏或移除textarea。

  <script>
      var text = 'ΦX-9hAf2vYA7jBEdcΦ';

      if (navigator.clipboard) {// clipboard api 复制
          navigator.clipboard.writeText(text);
      } else {var textarea = document.createElement('textarea');
          document.body.appendChild(textarea);
          // 隐藏此输入框
          textarea.style.position = 'fixed';
          textarea.style.clip = 'rect(0 0 0 0)';
          textarea.style.top = '10px';
          // 赋值
          textarea.value = text;
          // 选中
          textarea.select();

          // 复制
          document.execCommand('copy', true);
          // 移除输入框
          document.body.removeChild(textarea);
      }
    </script>

 

 注: 1、非点击触发的方式,线上需要SSL证书访问才有效   

       2、无效果也有可能是浏览器不支持或未获得授权导致的

 

标签:Web,剪贴板,读取,textarea,text,clipboard,Clipboard,error
From: https://www.cnblogs.com/sanplit/p/17775416.html

相关文章

  • python学习笔记-异步非阻塞web框架
    一、异步非阻塞框架介绍1、介绍支持异步非阻塞web框架:tornado,nodejs2、定义对比异步IO模块:我们作为客户端向服务端“并发”请求异步非阻塞web框架:针对服务端,希望一个线程处理更多的请求二、tornado异步非阻塞【要点提炼】使用装饰器@gen.coroutine模拟等待,使用特殊的......
  • 基于Java Web的多功能旅游网站的设计与实现-计算机毕业设计源码+LW文档
    摘 要 随着时代的发展,人们对旅游也越来越重视,近些年来我国的旅游产业也发生了翻天覆地的变化,但是很多人在出去旅游的时候不知道去哪里旅游,在预订酒店和机票的时候也没有一个综合性的旅游网站,为了让人们的旅游变的更加的方便,为此我开发了本基于JavaWeb的多功能旅游网站本基于......
  • 无代码玩转web UI自动化
    可以直接进入官网下载开源版或点击右上角体验企业版体验RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队无需复杂......
  • 无代码玩转web UI自动化
    可以直接进入官网下载开源版或点击右上角体验企业版体验 RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队......
  • 在.net core 6.0 中 使用WebAPI进行QQ的邮件发送
    首先,是在工作中遇到的发邮件问题,但是自己还没有去实现,就先写了一个Demo。主要的内容是在网上搜的。下面进入正文。首先发邮件,第一步要确认发送的邮件的邮箱是那个邮箱的邮箱号,比较绕。就像我是拿QQ邮箱作为发件人,那么我就需要登录QQ邮箱,点开设置(由于我登录的是网站版的所以设置......
  • Util应用框架Web Api开发快速入门
    本文是使用Util应用框架开发WebApi项目快速入门教程.前面已经详细介绍了环境搭建,如果你还未准备好,请参考前文.开发流程概述创建代码生成专用数据库.Util应用框架需要专门用来生成代码的数据库,该数据库仅用于代码生成.约定:代码生成数据库应以.Generator结尾.当......
  • CSV文件的读取与写入
    写入CSV文件save_path='/home/wp/st_detection/download_code/toy.csv'withopen(save_path,'w',newline='')ascsvfile:det_writer=csv.writer(csvfile,delimiter=',',quotechar='|',quoting=csv.QUOTE_MIN......
  • 攻防世界 Web php_rce
    打开页面发现使用了ThinkPHP框架参考https://blog.csdn.net/qq_30889301/article/details/130581008博客进行解题ThinkPHP是一个基于PHP语言的开源Web应用框架,它提供了一系列的工具和组件,可以帮助开发人员更快速、更高效地构建Web应用程序。ThinkPHP框架具有简单易用、高效稳......
  • Linux 环境下(Ubuntu)webbench的安装问题解决与使用
    webbench最多可以模拟3万个并发连接去测试网站的负载能力。并发能力比较高,可以测试https及动态静态页面。适合中小型网站测试承受能力。原理:父进程fork若干个子进程,每个子进程在用户要求时间或默认的时间内对目标web循环发出实际访问请求,父子进程通过管道进行通信,子进程通过......
  • 10.18(随机出题Web页面)
    今天完成了javaweb的出题系统,比较简陋jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>添加信息</title>&l......