Javascript - 单击一个元素以将其内容复制到剪贴板
Javascript - clicking an element to get it to copy it's contents to clip board
我需要一点帮助。我正在修改我的一个项目。目前有一个按钮,用户可以单击该按钮将 div 的文本内容复制到剪贴板。
function copyToClipboard(element) {
var $temp = $("<textarea>");
var brRegex = /<br\s*[\/]?>/gi;
$("body").append($temp);
$temp.val($(element).html().replace(/<\/?[a-zA-Z]+\/?>/g, '').trim()).select();
document.execCommand("copy");
$temp.remove();
}
我有一个按钮设置如下
<button style="copy-button" onclick="copyToClipboard('#copytarget')" id="copyresults">Copy to Clipboard</button>
我现在正在尝试修改此代码,这样用户无需单击按钮,只需单击文本本身(ID 为 'copytarget' 的 div)即可将其复制到剪贴板,但我无法使其正常工作。我有下面的,但不是复制!
document.getElementById("copytarget").addEventListener("click", copyToClipboard);
function copyToClipboard() {
var $temp = $("<textarea>");
var brRegex = /<br\s*[\/]?>/gi;
$("body").append($temp);
$temp.val($(element).html().replace(/<\/?[a-zA-Z]+\/?>/g, '').trim()).select();
document.execCommand("copy");
$temp.remove();
}
谁能看出我做错了什么?提前致谢!
您只需要再次 select copytarget
- 最简单的方法是 select 一次,然后在添加侦听器时引用该变量 and 当你抓住它的时候 val
。目前,您尚未将 copytarget
分配给您的 element
:
const copytarget = document.getElementById("copytarget");
copytarget.addEventListener("click", copyToClipboard);
function copyToClipboard() {
var $temp = $("<textarea>");
var brRegex = /<br\s*[\/]?>/gi;
$("body").append($temp);
$temp.val($(copytarget).html().replace(/<\/?[a-zA-Z]+\/?>/g, '').trim()).select();
document.execCommand("copy");
$temp.remove();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="copytarget">copy here</div>
但是不需要像 jQuery 这样的大库只为了这个:
const copytarget = document.getElementById("copytarget");
copytarget.addEventListener("click", copyToClipboard);
function copyToClipboard() {
const temp = document.body.appendChild(document.createElement('textarea'));
temp.value = copytarget.textContent.replace(/<\/?[a-zA-Z]+\/?>/g, '').trim();
temp.select();
document.execCommand("copy");
temp.remove();
}
<div id="copytarget">copy here 2</div>
我需要一点帮助。我正在修改我的一个项目。目前有一个按钮,用户可以单击该按钮将 div 的文本内容复制到剪贴板。
function copyToClipboard(element) {
var $temp = $("<textarea>");
var brRegex = /<br\s*[\/]?>/gi;
$("body").append($temp);
$temp.val($(element).html().replace(/<\/?[a-zA-Z]+\/?>/g, '').trim()).select();
document.execCommand("copy");
$temp.remove();
}
我有一个按钮设置如下
<button style="copy-button" onclick="copyToClipboard('#copytarget')" id="copyresults">Copy to Clipboard</button>
我现在正在尝试修改此代码,这样用户无需单击按钮,只需单击文本本身(ID 为 'copytarget' 的 div)即可将其复制到剪贴板,但我无法使其正常工作。我有下面的,但不是复制!
document.getElementById("copytarget").addEventListener("click", copyToClipboard);
function copyToClipboard() {
var $temp = $("<textarea>");
var brRegex = /<br\s*[\/]?>/gi;
$("body").append($temp);
$temp.val($(element).html().replace(/<\/?[a-zA-Z]+\/?>/g, '').trim()).select();
document.execCommand("copy");
$temp.remove();
}
谁能看出我做错了什么?提前致谢!
您只需要再次 select copytarget
- 最简单的方法是 select 一次,然后在添加侦听器时引用该变量 and 当你抓住它的时候 val
。目前,您尚未将 copytarget
分配给您的 element
:
const copytarget = document.getElementById("copytarget");
copytarget.addEventListener("click", copyToClipboard);
function copyToClipboard() {
var $temp = $("<textarea>");
var brRegex = /<br\s*[\/]?>/gi;
$("body").append($temp);
$temp.val($(copytarget).html().replace(/<\/?[a-zA-Z]+\/?>/g, '').trim()).select();
document.execCommand("copy");
$temp.remove();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="copytarget">copy here</div>
但是不需要像 jQuery 这样的大库只为了这个:
const copytarget = document.getElementById("copytarget");
copytarget.addEventListener("click", copyToClipboard);
function copyToClipboard() {
const temp = document.body.appendChild(document.createElement('textarea'));
temp.value = copytarget.textContent.replace(/<\/?[a-zA-Z]+\/?>/g, '').trim();
temp.select();
document.execCommand("copy");
temp.remove();
}
<div id="copytarget">copy here 2</div>