Adds new "value" attribute that creates a fake element and select its content to clipboard

This commit is contained in:
Zeno Rocha
2015-09-18 16:32:57 -07:00
parent 8780d3c6bb
commit f7d3fb249a
2 changed files with 26 additions and 6 deletions

View File

@@ -25,21 +25,40 @@ class Clipboard {
bind(trigger) {
trigger.addEventListener('click', e => {
var value = e.currentTarget.getAttribute('value');
var targetSelector = e.currentTarget.getAttribute('for');
var target = document.getElementById(targetSelector);
if (target.nodeName === 'INPUT' || target.nodeName === 'TEXTAREA') {
target.select();
if (value) {
var fake = document.createElement('input');
fake.value = value;
fake.style.opacity = 0;
fake.style.zIndex = -1;
document.body.appendChild(fake);
fake.select();
}
else {
var range = document.createRange();
range.selectNode(target);
window.getSelection().addRange(range);
if (target) {
if (target.nodeName === 'INPUT' || target.nodeName === 'TEXTAREA') {
target.select();
}
else {
var range = document.createRange();
range.selectNode(target);
window.getSelection().addRange(range);
}
}
try {
document.execCommand('copy');
window.getSelection().removeAllRanges();
if (value) {
document.body.removeChild(fake);
}
}
catch (err) {
console.error(err);