如何将div中的文本复制到剪贴板?我有一个div,需要添加一个链接,将文本添加到剪贴板。有解决办法吗?
<p class="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
<a class="copy-text">copy Text</a>
单击“复制文本”后,然后按CtrlV,必须粘贴该文本。
clipboard.js是一个很好的实用程序,允许复制文本或超文本标记语言数据到剪贴板,而不使用闪存。它非常容易使用;只要包含. js并使用这样的东西:
<button id='markup-copy'>Copy Button</button>
<script>
document.getElementById('markup-copy').addEventListener('click', function() {
clipboard.copy({
'text/plain': 'Markup text. Paste me into a rich text editor.',
'text/html': '<i>here</i> is some <b>rich text</b>'
}).then(
function(){console.log('success'); },
function(err){console.log('failure', err);
});
});
</script>
clipboard.js也在GitHub上。
2016年1月15日编辑:今天编辑了顶部答案,以引用我在2015年8月发布的答案中的相同应用编程接口。之前的文本指示用户使用ZeroClipboard。我只是想说清楚,我并没有把这句话从j友00的答案中扯出来,而是反过来。
截至2016年编辑
从2016年起,您现在可以在大多数浏览器中将文本复制到剪贴板,因为大多数浏览器都能够使用对选定内容有效的document.execCommand(“copy”)
以编程方式将选定的文本复制到剪贴板。
与浏览器中的某些其他操作(如打开新窗口)一样,复制到剪贴板只能通过特定的用户操作(如鼠标单击)完成。例如,它不能通过计时器来完成。
下面是一个代码示例:
document.getElementById("copyButton").addEventListener("click", function() {
copyToClipboard(document.getElementById("copyTarget"));
});
function copyToClipboard(elem) {
// create hidden text element, if it doesn't already exist
var targetId = "_hiddenCopyText_";
var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA";
var origSelectionStart, origSelectionEnd;
if (isInput) {
// can just use the original source element for the selection and copy
target = elem;
origSelectionStart = elem.selectionStart;
origSelectionEnd = elem.selectionEnd;
} else {
// must use a temporary form element for the selection and copy
target = document.getElementById(targetId);
if (!target) {
var target = document.createElement("textarea");
target.style.position = "absolute";
target.style.left = "-9999px";
target.style.top = "0";
target.id = targetId;
document.body.appendChild(target);
}
target.textContent = elem.textContent;
}
// select the content
var currentFocus = document.activeElement;
target.focus();
target.setSelectionRange(0, target.value.length);
// copy the selection
var succeed;
try {
succeed = document.execCommand("copy");
} catch(e) {
succeed = false;
}
// restore original focus
if (currentFocus && typeof currentFocus.focus === "function") {
currentFocus.focus();
}
if (isInput) {
// restore prior selection
elem.setSelectionRange(origSelectionStart, origSelectionEnd);
} else {
// clear temporary content
target.textContent = "";
}
return succeed;
}
input {
width: 400px;
}
<input type="text" id="copyTarget" value="Text to Copy"> <button id="copyButton">Copy</button><br><br>
<input type="text" placeholder="Click here and press Ctrl-V to see clipboard contents">
更新2020:此解决方案使用execCommand
。虽然在撰写本答案时,该功能还不错,但现在被认为已经过时。它仍然可以在许多浏览器上使用,但不鼓励使用,因为支持可能会被放弃。
还有另一种非Flash方式(除了jfriend00回答中提到的剪贴板API)。您需要选择文本,然后执行命令copy
,将当前在页面上选择的任何文本复制到剪贴板。
例如,此函数将把传递的元素的内容复制到剪贴板(在来自PointZeroTwo的注释中使用建议进行更新):
function copyToClipboard(element) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).text()).select();
document.execCommand("copy");
$temp.remove();
}
这就是它的工作原理:
document.exec命令("复制")
。请注意,元素的内部文本可以包含空格。因此,如果您想使用if(例如)作为密码,您可以在上面的代码中使用$(element).text().trim()
来修剪文本。
您可以在此处看到一个快速演示:
function copyToClipboard(element) {
var $temp = $("<input>");
$("body").append($temp);
$temp.val($(element).text()).select();
document.execCommand("copy");
$temp.remove();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p id="p1">P1: I am paragraph 1</p>
<p id="p2">P2: I am a second paragraph</p>
<button onclick="copyToClipboard('#p1')">Copy P1</button>
<button onclick="copyToClipboard('#p2')">Copy P2</button>
<br/><br/><input type="text" placeholder="Paste here for test" />
问题内容: 如何将div中的文本复制到剪贴板?我有一个div,需要添加一个链接,该链接会将文本添加到剪贴板。有解决方案吗? 单击复制文本后,然后按+ ,必须将其粘贴。 问题答案: 编辑 自2016年起,您现在可以在大多数浏览器中将文本复制到剪贴板,因为大多数浏览器都可以通过编程方式将选择的文本复制到剪贴板,从而可以将所选内容关闭。 与浏览器中的某些其他操作(如打开新窗口)一样,只能通过特定的用户操
如何将div中的文本复制到剪贴板?我有一个div和需要添加一个链接,这将添加文本到剪贴板。对此有解决方案吗? 单击“复制文本”后,按下Ctrl+V,必须将其粘贴。
由于目前在一个项目中使用ASP.NET4.7webforms,我正在尝试将在后端生成的数据复制到用户的客户端计算机。 换句话说,当用户提交表单时,在后端生成的代码需要复制到用户剪贴板。 这是我的尝试。 application.aspx.cs application.aspx im使用ClientScript.RegisterStartupScript调用客户端函数将编码值粘贴到用户剪贴板...但是
我在pygame中为点击事件制作了按钮,但存在一个问题。当我单击鼠标按钮并在按钮边界之间移动鼠标时,单击事件会重复自身。我只想单击一下,直到松开鼠标按钮。我该怎么做?
我有一个输入,并想使有一个复制链接旁边它的标签。 当我单击“复制”时,我不仅想复制输入值,而且还想预置更多文本。 + 我该怎么做? 使用上面的代码,只复制值。
问题内容: 如何将BufferedImage存储到系统剪贴板中? 问题答案: 这是从这里获得的工作代码,已成功测试