在React中使用document.createRange和window.getSelection

时间:2019-07-10 12:14:00

标签: reactjs

我正在使用Reactjs。在React中,如何在React中使用document.createRangewindow.getSelection以及document.execCommand('copy')

我想复制html表的内容。所以我用了代码

copyTable(e){
        let elTable = this.tableElement.current.localName\\ elTable= "table"     
  this.copyData(elTable)
    }

    copyData(elToBeCopied){

        let range, sel;

  // Ensure that range and selection are supported by the browsers
  if (document.createRange && window.getSelection) {

    range = document.createRange();
    sel = window.getSelection();
    // unselect any element in the page
    sel.removeAllRanges();

    try {
      range.selectNodeContents(elToBeCopied);
      sel.addRange(range);
    } catch (e) {
      range.selectNode(elToBeCopied);
      sel.addRange(range);
    }

    document.execCommand('copy');
  }

  sel.removeAllRanges();

  console.log('Element Copied! Paste it in a file')


    }

通过在html表中创建一个elTable,我得到了ref的值。

调试后,调试器将进入函数copyData

但是不能从表中复制数据。为什么?

我正在使用React js。

1 个答案:

答案 0 :(得分:0)

在App.js render() method中使用以下内容:

console.log(window.getSelection());
console.log(document.createRange());

在控制台中显示结果

enter image description here

您是否尝试过使用它们?如果您向您展示代码无法正常工作的地方,我们可以从那里继续。