Javascript 将元素的文本innerHTML复制到剪贴板
我在stackoverflow中尝试了许多解决方案,但都不起作用 我在运行代码中试用它(chrome 59.0.3071.104 64位) 有什么解决办法吗? 谢谢Javascript 将元素的文本innerHTML复制到剪贴板,javascript,Javascript,我在stackoverflow中尝试了许多解决方案,但都不起作用 我在运行代码中试用它(chrome 59.0.3071.104 64位) 有什么解决办法吗? 谢谢 编辑:我想我的问题是页面加载(安全浏览器),所有的解决方案都是用户交互的这对我来说很有效 var copyTextareaBtn=document.querySelector('.copybtn'); copyTextareaBtn.addEventListener('click',函数(事件){ var copy_text=d
编辑:我想我的问题是页面加载(安全浏览器),所有的解决方案都是用户交互的这对我来说很有效
var copyTextareaBtn=document.querySelector('.copybtn');
copyTextareaBtn.addEventListener('click',函数(事件){
var copy_text=document.getElementsByTagName(“h4”)[0];
var range=document.createRange();
范围。选择节点(复制文本);
window.getSelection().addRange(范围);
试一试{
var successful=document.execCommand('copy');
var msg=successful?'successful':'successful';
log('复制文本命令为'+msg');
}捕捉(错误){
log('Oops,无法复制');
}
});代码>
复制
要复制的文本数据
这里有一种快速的黑客方法来做你想做的事情,有一个隐藏的输入,我们把数据放进去,然后从那里复制。(文本区域就是要粘贴到其中的位置)
函数copyText(e){
var textToCopy=document.querySelector(e);
var textBox=document.querySelector(“.clipboard”);
setAttribute('value',textToCopy.innerHTML);
textBox.select();
document.execCommand('copy');
}
。隐藏{
位置:固定;
底部:0;
右:0;
指针事件:无;
不透明度:0;
变换:比例(0);
}
要复制的文本数据
复制
这里是第一个示例。我的例子是根据我的需要重新编写的,但你会明白这一点:)
МццПццimk!
函数bufferText(){
const el=document.createElement(“textarea”);
el.value=event.target.innerHTML;
文件.正文.附件(el);
el.select();
文件。执行命令(“副本”);
文件.正文.删除文件(el);
}
console.log(document.queryCommandSupported('copy'))这个命令有什么输出?它写“true”你试过了吗?@Saravana:window.getSelection().addRange(range)
sellect也成功。可以sellect但不能copy要在页面加载时调用函数,可以使用jQuery$.ready()
,或者如果不想使用jQuery,可以按照以下说明操作:@JoseGomez:$('document')。ready(function(){var copy_text=document.getElementsByTagName(“h4”)[0];var range=document.createRange();range.selectNode(复制文本);window.getSelection().addRange(范围);document.execCommand(“复制”);})代码>仍然失败:(再次您好,进一步查看,我在W3规范中发现了以下内容:基本上,它说您不能与剪贴板交互,而是用户触发操作(单击按钮左右)。我认为您无法在document.ready或类似文件中编辑用户剪贴板:(嗯,我想解决方案是添加一个按钮来复制该文本并将打印()复制到pdf。(当单击-不打印该按钮时隐藏该按钮)在Chrome中不起作用:[弃用]Selection.addRange()的行为合并现有范围并删除指定的范围。有关详细信息,请参阅。var copy_text=document.getElementsByTagName(“h4”)[0];var hidden_=document.createElement(“输入”);hidden_.setAttribute(“类”、“剪贴板隐藏”);copy_text.appendChild(隐藏);copy_text.setAttribute(“类”、“复制_text”);函数copyText(e){var textToCopy=document.querySelector(e);var textBox=document.querySelector(“.clipboard”);textBox.setAttribute('value',textToCopy.innerHTML);textBox.select();document.execCommand('copy');}copyText(.copy_text”);
它也失败了,我认为问题是页面加载。所有解决方案(按钮)页面加载成功这对我也不起作用,为什么不呢?
<h4 align="center">text data to copy</h4>
var copy_text = document.getElementsByTagName("h4")[0];
copy_text.select(); //-> error: select is not a function
var range = document.createRange();
range.selectNode(copy_text);
window.getSelection().addRange(range);
document.execCommand("copy"); //-> clipboard not change
<div onclick="bufferText()">Миньор Перник!</div>
<script>
function bufferText() {
const el = document.createElement("textarea");
el.value = event.target.innerHTML;
document.body.appendChild(el);
el.select();
document.execCommand("copy");
document.body.removeChild(el);
}
</script>