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。
答案 0 :(得分:2)
答案 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";
希望它有所帮助。