javascript - 通过临时将文本复制到剪贴板
问题描述
使用 JavaScript,我创建input
,用数据填充它,并希望复制value
到剪贴板。不幸的是,没有任何东西被复制。为什么这种方式不能正常工作?
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Copy test</title>
<style>html{background: #000;}</style>
</head>
<body>
<button type="button" id="testButton">Copy</button>
<script>
document.addEventListener('DOMContentLoaded', () => {
let button = document.getElementById('testButton');
button.addEventListener('click', () => {
let el = document.createElement('input');
// fill input with values
el.setAttribute('type', 'text');
el.setAttribute('value', 'text to copy');
// try to copy
el.select();
document.execCommand('copy');
console.log("OK");
});
});
</script>
</body>
</html>
解决方案
这个 API 没有被浏览器广泛支持,所以也许这是一个原因。我建议你改用https://www.npmjs.com/package/clipboard,你不需要考虑跨浏览器的东西。
如果您仍然想使用您的代码,那么我猜它的发生是因为您没有将此元素附加到 DOM。
工作片段:
button.addEventListener('click', () => {
let el = document.createElement('input');
document.body.appendChild(el);
// fill input with values
el.setAttribute('type', 'text');
el.setAttribute('value', 'text to copy');
// try to copy
el.select();
document.execCommand('copy');
el.remove()
console.log("OK");
});
推荐阅读
- c++ - 在方法中无效使用非静态数据成员
- python - 从 path.exists() 得到错误的答案
- excel - 如何使用动态分发列表发送邮件
- java - CentOS 7:如何在无法连接到 Internet 的计算机上安装 open-jdk?(使用 yum 安装命令)
- css - 溢出:自动无法正常工作
- python - (Python) 就地修改几个列表
- javascript - Highcharts 将外部变量传递给全局选项
- javascript - 嵌套数组上的猫鼬聚合
- php - 从 php 中的选定选项声明两个变量
- git - Git pre-commit hook:使用-a标志提交时如何获取添加/修改的文件