将元素的textHTML复制到剪贴板

时间:2017-07-04 14:16:45

标签: javascript

我在stackoverflow中尝试了很多解决方案,但它不起作用。(herehere

我在Website中尝试使用chrome extension运行代码(chrome 59.0.3071.104 64bit)

<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

任何解决方案? 三江源。

编辑1:我认为我的问题是页面加载,所有解决方案都是表示页面加载的按钮

3 个答案:

答案 0 :(得分:2)

这对我有用。

var copyTextareaBtn = document.querySelector('.copybtn');

copyTextareaBtn.addEventListener('click', function(event) {
  var copy_text = document.getElementsByTagName("h4")[0];
  var range = document.createRange();
  range.selectNode(copy_text);
  window.getSelection().addRange(range);

  try {
    var successful = document.execCommand('copy');
    var msg = successful ? 'successful' : 'unsuccessful';
    console.log('Copying text command was ' + msg);
  } catch (err) {
    console.log('Oops, unable to copy');
  }
});
<button class="copybtn">Copy</button>
<h4 align="center">text data to copy</h4>

但如果我尝试不复制点击,而是在页面加载时

,则无法正常工作

答案 1 :(得分:0)

这是一种快速的hacky方式来做你想要的,有一个隐藏的输入,我们把数据放入然后从那里复制它。 (文本区域只是要粘贴的地方)

&#13;
&#13;
function copyText(e) {
  var textToCopy = document.querySelector(e);
  var textBox = document.querySelector(".clipboard");
  textBox.setAttribute('value', textToCopy.innerHTML);

  textBox.select();
  document.execCommand('copy');
}
&#13;
.hidden {
  position: fixed;
  bottom: 0;
  right: 0;
  pointer-events: none;
  opacity: 0;
  transform: scale(0);
}
&#13;
<h4 class="text" align="center">Text data to copy</h4>

<button onclick="copyText('.text')" class="copy">Copy</button>
<br><br>
<textarea></textarea>

<input class="clipboard hidden" />
&#13;
&#13;
&#13;

答案 2 :(得分:0)

这里,第一个例子。 https://hackernoon.com/copying-text-to-clipboard-with-javascript-df4d4988697f。我的示例是根据我的需要重写的,但是您会明白这一点的:)

<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>