Adds support for any HTML element

This commit is contained in:
Zeno Rocha 2015-09-17 23:53:36 -07:00
parent 231d62db0e
commit d682f4a3d4
3 changed files with 40 additions and 2 deletions

10
dist/clipboard.js vendored
View File

@ -29,13 +29,21 @@ var Clipboard = (function () {
key: 'bind',
value: function bind(trigger) {
trigger.addEventListener('click', function (e) {
var value = e.currentTarget.getAttribute('value') || '';
var targetSelector = e.currentTarget.getAttribute('for');
var target = document.getElementById(targetSelector);
target.select();
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();
} catch (err) {
console.error(err);
}

22
index.html Normal file
View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Clipboard.js</title>
</head>
<body>
<p id="paragraph">Lorem ipsum dolor.</p>
<button class="btn" for="paragraph" type="button">Copy</button>
<form>
<input id="target" type="text" value="qwe">
<button class="btn" for="target" type="button">Copy</button>
</form>
<script src="dist/clipboard.js"></script>
<script>
new Clipboard('.btn');
</script>
</body>
</html>

View File

@ -28,10 +28,18 @@ class Clipboard {
var targetSelector = e.currentTarget.getAttribute('for');
var target = document.getElementById(targetSelector);
target.select();
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();
}
catch (err) {
console.error(err);