复制表格和文字。

发布于 2022-09-13 00:32:46 字数 2004 浏览 14 评论 0

问题描述

项目需求要复制表格,只要复制表格,再去复制文字,文字就无法复制,只将表格再复制一次。

问题出现的环境背景及自己尝试过哪些方法

起初我以为各个组件中的复制方法可能会互相干扰,所以会出现这种如果先复制了表格,再去复制文本无效的情况,后面我将复制方法都放到一个js文件中,各个组件引入调用,还是同样的问题

相关代码

粘贴代码文本(请勿用截图)
/**

  • @Description: 复制表格数据
  • @author: JianTao
  • @date: 2021/7/3
    */

export const copyTableData = function (_this, table, header) {

let tableColumn = ``, tableData = ``, tableCopyData = [],
copyTable = [], copyColumn = [], selection = ``;
document.execCommand('copy');
document.addEventListener("copy", (event) => {

if (event.clipboardData || event.originalEvent) {
  let clipboardData = (event.clipboardData || event.originalEvent.clipboardData);
  // 拼接数据
  tableCopyData = table.slice(0);
  copyColumn = header.slice(0);
  tableCopyData.map(item => {
    let object = {};
    //object["area_name"] = item["area_name"];
    copyColumn.map(value => {
      let prop = value["prop"];
      object[prop] = item[prop];
    });
    copyTable.push(object);
  });

  copyTable.map((item, index) => {
    //tableData += `${index}\t`;
    for (let key in item) {
      tableData += `${item[key]}\t`
    }
    tableData += '\n';
  });


  tableColumn = copyColumn.map(item => item.label).join('\t');

  selection = `${tableColumn}\n${tableData}`;
  clipboardData.setData('text/plain', selection.toString());
  event.preventDefault();
  }
 });

_this.$message.success("复制表格成功!");

};

/**

  • @Description: 复制文字
  • @author: JianTao
  • @date: 2021/7/3
    */
export const copyText = function (e, text, _this) {
let url = text;
 let oInput = document.createElement('input');
 oInput.value = url;
 document.body.appendChild(oInput);
 oInput.select(); // 选择对象;
document.execCommand("copy"); // 执行浏览器复制命令
 _this.$message({
  message: '复制文字成功',
  type: 'success'
 });
 oInput.remove()
};

你期待的结果是什么?实际看到的错误信息又是什么?

我期待的结果:正常复制即可(表格和文本的复制互不干扰),请各位路过的大佬指导一二

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文