复制内容/组件到剪切板

复制内容/组件到剪切板

需求:点击按钮复制组件代码
在这里插入图片描述

把组件内容写在public文件里
![在这里插入图片描述](https://img-blog.csdnimg.cn/c4faf04d100946349e02e6bec3110d4d.png

按钮的方法:

  copyImportedFileContent(val) {
  // 传入组件名字  对应public文件里的txt文件
      axios
        .get(`../../../data/柱图/文本/${val}.txt`)
        .then((res) => {
          const componentCode = res.data;
          navigator.clipboard
            .writeText(componentCode)
            .then(() => {
              alert('组件内容已成功复制!');
            })
            .catch((err) => {
              console.error('复制文件内容失败:', err);
            });
        })
        .catch((err) => {
          console.error('加载文件失败:', err);
        });
    },

在这里插入图片描述

成功复制!粘贴就好啦


后续:
打包的时候发现方法失效,好多浏览器不支持navigator.clipboard.writeText方法,为了解决这个问题,你可以在调用 navigator.clipboard.writeText 方法之前,先检查一下浏览器是否支持该方法。你可以使用以下代码进行检查:

if (navigator.clipboard && navigator.clipboard.writeText) {
  // 调用 writeText 方法
} else {
  // 处理浏览器不支持的情况
  console.error('当前浏览器不支持 navigator.clipboard.writeText 方法');
}

改用下面的方法,打包部署后发现功能正常。
这个方法使用 document.execCommand,通过创建一个隐藏的 input 或 textarea 元素,将文本内容设置为其值,然后选中并执行复制命令。(长文本建议使用textarea )

 copyImportedFileContent(val) {
      axios
        .get(`./data/other/文本/${val}.txt`)
        .then((res) => {
          // 获取要复制的内容
          var textArea = document.createElement('textarea');
          textArea.value = res.data;
          document.body.appendChild(textArea);
          textArea.select();
          document.execCommand('copy');
          document.body.removeChild(textArea);
          // 提示复制成功
          alert('内容已复制到剪贴板');
        })
        .catch((err) => {
          console.error('加载文件失败:', err);
        });
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值