2016-03-04 111 views
1
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。如何使用JavaScript将变量的内容放入剪贴板?

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

我不关心安全性,因为这个应用程序不会被发布,只是为了脱机使用。

我想保持它尽可能简单,并添加不可见的textarea破坏布局。我目前的环境中不允许使用Flash。

+1

可能重复[如何在JavaScript中复制到剪贴板?](http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) –

回答

1

这是通过更新我的浏览器(谷歌浏览器V49)解决。我正在使用较低版本(v34)。

发现,谷歌浏览器的更新版本(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

看clipboard.js

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

不使用闪光灯。没有依赖关系。只是2KB gzip压缩

https://clipboardjs.com/

+0

我已经阅读了这篇文章,当它说: “现在,你需要通过传递一个DOM选择器,HTML元素或HTML元素列表来实例化它。” 我真的不知道如何将其应用于我的代码。如果你能够阐明这一点或者提供一个简单的例子,我会很感激。 –

+0

简要说明你迷路的地方。我同意seahorsepip的评论。 –

+0

1.我不是从元素中复制 2.我不是从元素中删除内容 3.它没有表达如何将数据剪贴板文本发送到变量。 虽然我承认,我不像你听起来那么专业,这就是为什么我问这个问题的原因,因为我已经阅读了很多东西,还没有理解如何将它应用到我目前的项目中。 我以前在IE中做过这项工作,但是因为我现在只有谷歌浏览器才能使用,这就是我提出这个问题的原因。 –

0

this article“在JavaScript中,由于没有直接命令,将变量中的值复制到剪贴板并不容易。“

因此所建议有我做了以下:

  • 定义在HTML文件中的以下 - 我在底部加入(I从来没有注意到添加元素和被移除):

    <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); 
    } 
    

可能有一个更好的办法,但它为我工作。

UPDATE:

而且,我发现,如果你的文本是多,如果你使用的类型的文本输入的所有文本转换为一个行文本。

为了保持段落/单独的行我试图用文字区域和文字原样复制 - 多行:

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

希望它可以帮助别人。

相关问题