如何将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>
单击“复制文本”后,按下Ctrl+V,必须将其粘贴。
js是一个很好的实用程序,它允许在不使用Flash的情况下将文本或HTML数据复制到剪贴板。它非常容易使用;只需包含.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月发布的答案中引用了相同的API。前面的文本指示用户使用ZeroClipboard。我只想明确一点,我不是从JFriend00的答案中删除这个内容,而是从另一个方面删除这个内容。
更新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.execCommand(“copy”)
。注意,元素的内部文本可以包含空格。因此,如果您想使用if(例如密码),您可以在上面的代码中使用$(element).text().trim()
来修剪文本。
您可以在这里看到一个快速演示:
null
js prettyprint-override">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" />
自2016年起编辑
从2016年起,您现在可以在大多数浏览器中将文本复制到剪贴板,因为大多数浏览器都可以使用document.execCommand(“copy”)
以编程方式将选定的文本复制到剪贴板,该功能可以在选定的文本上工作。
与浏览器中的其他操作(如打开新窗口)一样,复制到剪贴板只能通过特定的用户操作(如鼠标单击)完成。例如,它不能通过定时器来完成。
下面是一个代码示例:
null
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">
问题内容: 如何将div中的文本复制到剪贴板?我有一个div,需要添加一个链接,该链接会将文本添加到剪贴板。有解决方案吗? 单击复制文本后,然后按+ ,必须将其粘贴。 问题答案: 编辑 自2016年起,您现在可以在大多数浏览器中将文本复制到剪贴板,因为大多数浏览器都可以通过编程方式将选择的文本复制到剪贴板,从而可以将所选内容关闭。 与浏览器中的某些其他操作(如打开新窗口)一样,只能通过特定的用户操
如何将div中的文本复制到剪贴板?我有一个div,需要添加一个链接,将文本添加到剪贴板。有解决办法吗? 单击“复制文本”后,然后按CtrlV,必须粘贴该文本。
我有一个角9应用程序,我需要得到一个复制到剪贴板的url复制时,点击。这是我目前所掌握的: 它复制,但不是在第一次尝试,只有在第二次尝试,它是安慰。然后点击叠加,所以第三次点击显示它被点击了3次。为什么?我在这里做错了什么?
由于目前在一个项目中使用ASP.NET4.7webforms,我正在尝试将在后端生成的数据复制到用户的客户端计算机。 换句话说,当用户提交表单时,在后端生成的代码需要复制到用户剪贴板。 这是我的尝试。 application.aspx.cs application.aspx im使用ClientScript.RegisterStartupScript调用客户端函数将编码值粘贴到用户剪贴板...但是
问题内容: 如何将BufferedImage存储到系统剪贴板中? 问题答案: 这是从这里获得的工作代码,已成功测试
将一个字符串复制到剪贴板。 仅作为用户操作的结果(即,在 click 事件侦听器中)。 创建一个新的 <textarea> 元素,用提供的数据填充它,并将其添加到 HTML 文档中。 使用 Selection.getRangeAt() 来存储选择的范围(如果有的话)。 使用 document.execCommand('copy') 复制到剪贴板。 从HTML文档中删除 <textarea> 元素。