如何解决如何将文本复制到剪贴板 - 跨浏览器
好的,感觉就像我在这里如何将文本复制到剪贴板并尝试了很多建议的兔子洞一样
对于 chrome 似乎很容易做到,但该选项在其他浏览器中不起作用
我有几个要求
- 我想将文本复制到剪贴板
- 能够复制包含多个元素的 html 部分
- 至少在 safari 和 chrome 中工作
- 原生 JavaScript
我找到了这个解决方案,除了它也复制 html 标签之外它有效吗?
我尝试将按钮上的 .innerHTML 更改为 .value,但返回未定义
<div id="something">
<div>first name: <span class="name">name</span></div>
<div>Job title: <span class="job">job</span></div>
<div>Phone number: <a href="0123456789" class="number">0123456789</a></div>
<img class="companylogo" src="./img/example.jpg">
</div>
<button onclick="copyToClipboard(document.getElementById('something').innerHTML)">
Copy the stuff
</button>
<script>
/* copy function */
function copyToClipboard(textToCopy) {
var textArea;
function isOS() {
//can use a better detection logic here
return navigator.userAgent.match(/ipad|iphone/i);
}
function createTextArea(text) {
textArea = document.createElement('textArea');
textArea.readOnly = true;
textArea.contentEditable = true;
textArea.value = text;
document.body.appendChild(textArea);
}
function selectText() {
var range,selection;
if (isOS()) {
range = document.createRange();
range.selectNodeContents(textArea);
selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
textArea.setSelectionRange(0,999999);
} else {
textArea.select();
}
}
function copyTo() {
document.execCommand('copy');
document.body.removeChild(textArea);
}
createTextArea(textToCopy);
selectText();
copyTo();
}
</script>
解决方法
document.getElementById('something').innerHTML
将 #something 中的 html 代码发送到 copyToClipboard 并且您提到的这种行为是预期的。如果不是 html,您想将什么复制到剪贴板?
,感谢 Hosseind600 提供帮助
但我设法找到了一些完全符合我希望它做的代码。同时勾选我设定的要求
它目前是第二个答案,但票数最高 How to copy text from a div to clipboard
<html>
<body>
<div id="a" onclick="copyDivToClipboard()"> Click to copy </div>
<script>
function copyDivToClipboard() {
var range = document.createRange();
range.selectNode(document.getElementById("a"));
window.getSelection().removeAllRanges(); // clear current selection
window.getSelection().addRange(range); // to select text
document.execCommand("copy");
window.getSelection().removeAllRanges();// to deselect
}
</script>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。