我在stackoverflow中尝试了很多解决方案,但它不起作用。(here和here)
我在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:我认为我的问题是页面加载,所有解决方案都是表示页面加载的按钮
答案 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方式来做你想要的,有一个隐藏的输入,我们把数据放入然后从那里复制它。 (文本区域只是要粘贴的地方)
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;
答案 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>