代码之家  ›  专栏  ›  技术社区  ›  user3174311

如何在JS中复制文本和换行符

  •  0
  • user3174311  · 技术社区  · 7 年前

    我有一些这样的文字

    text = 'line 1' + "\r\n";
    text+= 'line 2' + "\r\n";
    text+= 'line 3' + "\r\n";
    

    我用这个函数把它复制到剪贴板

    function copyToClipboard(text)
    {
    
        var copyElement = document.createElement("span");
        copyElement.appendChild(document.createTextNode(text));
        copyElement.id = 'tempCopyToClipboard';
        angular.element(document.body.append(copyElement));
    
        // select the text
        var range = document.createRange();
        range.selectNode(copyElement);
        window.getSelection().removeAllRanges();
        window.getSelection().addRange(range);
    
        // copy & cleanup
        document.execCommand('copy');
        window.getSelection().removeAllRanges();
        copyElement.remove();
    }
    

    我怎样才能把它复制到剪贴板而不丢失换行符?

    2 回复  |  直到 7 年前
        1
  •  0
  •   user3174311    7 年前

    我复制了这个片段,但我刚刚意识到我应该使用textarea而不是span。

        2
  •  -1
  •   TabsNotSpaces    7 年前

    function copyToClipboard()
    {
        var text = 'line 1' + "\r\n";
        text+= 'line 2' + "\r\n";
        text+= 'line 3' + "\r\n";
        
        var copyElement = document.createElement("span");
        copyElement.appendChild(document.createTextNode(text));
        copyElement.id = 'tempCopyToClipboard';
        angular.element(document.body.append(copyElement));
    
        // select the text
        var range = document.createRange();
        range.selectNode(copyElement);
        window.getSelection().removeAllRanges();
        window.getSelection().addRange(range);
    
        // copy & cleanup
        document.execCommand('copy');
        window.getSelection().removeAllRanges();
        copyElement.remove();
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
    
    <button type="button" onclick="copyToClipboard()">Copy text to clipboard</button>