将文本复制到剪贴板可以更轻松地使用网页,因此用户肯定会喜欢此功能。
我们可以使用 JavaScript 来实现它,我们随时为我们提供帮助。
浏览器扩展可以与系统剪贴板交互的方法有两种:Document.execCommand() 方法和异步剪贴板 API。
execCommand()
document.execCommand() 可用于触发“剪切”和“复制”操作,用当前选定的数据替换剪贴板的当前内容。
看看下面的一段代码:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<p>
<button id="copyTextBtn">Copy Textarea</button>
<textarea id="copytextarea">Selcet and copy text</textarea>
</p>
<script>
copyTextBtn = document.querySelector('#copyTextBtn');
copyTextBtn.addEventListener('click', function(event) {
let copyTextarea = document.querySelector('#copytextarea');
copyTextarea.focus();
copyTextarea.select();
try {
let successful = document.execCommand('copy');
let msg = successful ? '成功' : '失败';
alert('复制 ' + msg);
} catch(err) {
alert('无法复制');
}
});
</script>
</body>
</html>
其中我们创建一个完全透明的 textarea 并将其添加到文档正文。
完成后,我们将其内容设置为要复制的文本。
调用 document.execCommand(copy) 选择 textarea 内容。
最后一步是从文档中删除 textarea。
剪贴板 API
Clipboard API 提供了灵活性并且不限制将当前选择复制到剪贴板。
我们可以直接指定要添加到剪贴板的信息。
我们应该调用 writeText() 函数将文本复制到剪贴板:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<textarea id="textId">Some copying text</textarea>
<button id="copyBtn">Copy Button</button>
<script>
document.getElementById("copyBtn")
.onclick = function() {
let text = document.getElementById("textId").value;
navigator.clipboard.writeText(text)
.then(() => {
alert('文本已复制到剪切板');
})
.catch(err => {
alert('无法复制: ', err);
});
}
</script>
</body>
</html>
我们也可以编写一个异步函数并等待 writeText() 函数的返回:
<!DOCTYPE html>
<html>
<head>
<title>文档的标题</title>
</head>
<body>
<textarea id="textId">Some copying text</textarea>
<button id="copyBtn">Copy Button</button>
<script>
document.getElementById("copyBtn").onclick = function() {
let text = document.getElementById("textId").value;
copyTextToClipboard(text);
}
async function copyTextToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
alert('文本已复制到剪切板');
} catch(err) {
alert('无法复制: ', err);
}
}
</script>
</body>
</html>
剪贴板 API 提供了响应剪贴板命令(剪切、复制和粘贴)以及异步读取或者写入系统剪贴板的能力。
日期:2020-06-02 22:16:14 来源:oir作者:oir
