首页 > 其他分享 >一键复制功能,可复制dom中的所有内容包括图片文本

一键复制功能,可复制dom中的所有内容包括图片文本

时间:2024-11-22 15:13:36浏览次数:3  
标签:console clipboard dom text 一键 window 复制 message

 1. 使用clipboardAPI

// 复制内容
    copyInfo(message){
      let element = this.$refs.contentContainer // dom元素
      const range = document.createRange();
      range.selectNode(element);
      window.getSelection().removeAllRanges(); // clear current selection
      window.getSelection().addRange(range); // to select text

      try {
          // 判断当前浏览器是否支持clipboardAPI
          if (navigator.clipboard && window.isSecureContext) {
            await navigator.clipboard.write([
                new ClipboardItem({
                  'text/html': new Blob([element.innerHTML], { type: 'text/html' })
                })
            ]).then(() => {
                  this.$message({
                    message: '复制成功',
                    type: 'success'
                  });
              }).catch(err => {
                  console.error('Could not copy text: ', err);
              });
          } else {
              // 不支持使用document.execCommand方法
              document.execCommand('copy');
              this.$message({
                message: '复制成功',
                type: 'success'
              });
          }
      } catch (err) {
          console.error('Error in copying text: ', err);
      }
      window.getSelection().removeAllRanges();
    },

   使用这个方法后发现一个问题使用navigator.clipboard.write复制的dom元素只能粘贴到富文本编辑器或者微信还有dom文档,不能粘贴到其他地方,例如钉钉。

2.clipboard.js

  使用

npm install clipboard --save

  

<div class="markdown-body"></div>
<i class="el-icon-document-copy btn" 
    data-clipboard-target=".markdown-body" 
    @click="copyInfo(content)" 
    style="padding: 3px;cursor: pointer;">
</i>
copyInfo(message){
  let clipboard = new Clipboard('.btn');
  // 复制成功
  clipboard.on("success", (e) => {
    console.log(e, '复制成功');
    clipboard.destroy();
  });
  //复制失败
  clipboard.on("error", (e) => {
    console.log(e, '复制失败');
    clipboard.destroy();
  });
}

  该方法实现后效果和document.execCommand('copy')类似

标签:console,clipboard,dom,text,一键,window,复制,message
From: https://blog.csdn.net/weixin_72348449/article/details/143948776

相关文章

  • IDEA+Docker一键部署项目SpringBoot项目
    文章目录1.部署项目的传统方式2.前置工作3.SSH配置4.连接Docker守护进程5.创建简单的SpringBoot应用程序6.编写Dockerfile文件7.配置远程部署7.1创建配置7.2绑定端口7.3添加执行前要运行的任务8.部署项目9.开放防火墙的11020端口10.访问项目11.可能遇到......
  • Zepto基本选择器与DOM操作
    目录Zepto基本选择器ZeptoDOM操作Zepto基本选择器基础选择器ID选择器Zepto('#elementId');此代码会选取ID为elementId的DOM元素。类选择器Zepto('.className');选取所有拥有类名为className的元素。标签选择器Zepto('tagName');选取所有指定标签名(如div,s......
  • 全网首发!红帽 RHEL 10.0 一键安装 Oracle 19C,硬核!
    大家好,这里是Lucifer三思而后行,专注于提升数据库运维效率。目录社群交流前言安装准备环境信息安装命令安装过程连接测试写在最后往期精彩文章社群交流为了给大家提供一些技术交流的平台,目前已成立的技术交流群:Oracle数据库交流群国产数据库交流群Linux技术交......
  • WEB攻防-XSS跨站&反射型&存储型&DOM型&标签闭合&输入输出&JS代码解析
    XSS跨站-输入输出-原理&分类&闭合漏洞原理:接受输入数据(如前端JS代码进行执行),输出显示数据后解析执行(先分析,在输入,有闭合绕闭合,有过滤绕过滤)反射(非持续型攻击)有一些浏览器会阻止不确定用户会不会点击利用:可以制造一个钓鱼网站基础类型:反射(非持续),存储(持续),DOM......
  • uni-app对接一键登录
    官方文档地址:https://uniapp.dcloud.net.cn/univerify.html1.2.开通uniCloud服务一键登录功能需要用到云空服务空间和云函数所以必须开通服务空间,你一键登录创建的原函数上传后也会存在这里面 3.配置manifest.json,需要在App模块配置勾选上OAuth(登录鉴权)和一键登录(univ......
  • MySQL 主从复制之多线程复制
    目录一、MySQL多线程复制的背景二、MySQL5.5主从复制1、原理2、部署主从复制2.1、主节点安装配置MySQL5.52.2、从节点安装配置MySQL5.53、检查主从库server_id和log_bin配置4、创建主从复制用户5、获取主库的二进制日志文件和位置6、配置从库连接主库参数并启动从库复制......
  • 网站显示不安全?免费方案在此,一键拯救你的网站形象!
    随着大家对网络安全方面的意识越来越强,用户在访问网站的时候也越发看重其安全性了。要是您的网站出现了“不安全”这样的警告提示,那可不只是会把那些潜在的客户给吓跑,还很可能会对搜索引擎给您网站的排名造成影响,进而损害到网站的名声呢。不过别着急担心,这儿就有一套既简单......
  • 解锁桌面工作安排新境界,一键提升效率!
    在如今快节奏的工作环境中,如何有效地管理个人任务和团队协作已成为许多职场人士的核心挑战。传统的纸质计划和电子邮件已经难以满足现代工作的需求,而桌面工作安排软件则提供了一种更加高效、便捷的解决方案。它不仅能够帮助用户清晰地规划工作任务,还能够有效地提升团队的协同效率,......
  • 说说你对影子(Shadow)DOM的了解
    ShadowDOM(影子DOM)是Web组件的关键特性之一,它允许在网页上创建封装的DOM树,从而实现样式和行为的隔离。这就像在页面中创建了一个“独立的世界”,外部样式不会影响内部,内部样式也不会泄漏到外部。以下是ShadowDOM的一些关键特性和优势:封装样式:ShadowDOM中的样式是独立的......
  • 一键生成美观的彩页演示+AI的训练过程科普
    一键生成美观彩页+AI训练揭秘:让你的内容瞬间高大上!阅读时间:8分钟|字数:1300+你是否曾为制作精美的演示文稿而烦恼?是否对AI的训练过程充满好奇?今天,让我们一起探索如何用AI一键生成美观彩页,同时揭秘ChatGPT的训练过程!......