如何使用javascript将变量的内容放入剪贴板?

时间:2016-03-04 21:18:29

标签: javascript html5 client-side

function Copy() // this function will be latched to a button later on.
{
    var text = writePreview(); // this pours in the formatted string by the writePreview() function to the variable 'text'
    text = br2nl(text); //variable 'text' is purified from <br/> and is replaced by a carriage return

    //I need some code here to pour in the contents of the variable 'text' to the clipboard. That way the user could paste the processed data to a 3rd party application
}

我正在构建一个离线客户端Web应用程序。这样做的主要目的是让用户输入字段,格式化文本以使其符合特定条件,然后单击复制以便将其粘贴到第三方CRM。

唯一可用的浏览器是Google Chrome。我已经浏览了互联网,希望找到一个简单的解决方案。

我并不关心安全性,因为这个应用程序不会被发布,仅供离线使用。

我希望尽可能简单,并添加不可见的textarea破坏布局。在我当前的环境中不允许使用Flash。

3 个答案:

答案 0 :(得分:2)

查看clipboard.js

  

将文本复制到剪贴板的现代方法

     

没有闪光灯。没有依赖。只需2kb gzipped

https://clipboardjs.com/

答案 1 :(得分:1)

通过更新我的浏览器(Google Chrome v49)解决了这个问题。我使用的是较低版本(v34)。

发现Google Chrome的更高版本(v42 +)支持document.execCommand('copy')

我希望它可以帮助人们

这是我使用的功能:

function SelectAll(id)
{
    document.getElementById(id).focus();
    document.getElementById(id).select();
}

function copy()
{
    SelectAll('textAreaID');
    document.execCommand("Copy", false, null);
}

答案 2 :(得分:0)

根据 this article“在javascript中,将值从变量复制到剪贴板并不简单,因为没有直接命令。”。

因此我按照建议做了以下内容:

  • 在html文件中定义了以下内容 - 我在底部添加了(我从未注意到元素被添加并被删除):

    <div id="container"/>

  • 然后在Javascript中我添加了:

    function copyQ() {

        var container = document.getElementById("container");
        var inp = document.createElement("input");
        inp.type = "text";
        container.appendChild(inp); 
        inp.value = "TEST_XYZ";
        inp.select();
        document.execCommand("Copy");
        container.removeChild(container.lastChild);
        alert("Copied the text: " + inp.value);
    }
    

可能有更好的方法,但它对我有用。

更新:

此外,我发现如果你的文字是多行的,如果你使用文字类型的输入,所有文字都会转换成一行文字。

要保留段落/单独的行,我尝试使用textarea,文本按原样复制 - 多行:

    var inp = document.createElement("textarea");
    //inp.type = "text";

希望它有所帮助。