diff --git a/dist/clipboard.js b/dist/clipboard.js index 38269cd..f471046 100644 --- a/dist/clipboard.js +++ b/dist/clipboard.js @@ -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); } diff --git a/index.html b/index.html new file mode 100644 index 0000000..555d495 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ + + +
+ +Lorem ipsum dolor.
+ + + + + + + + + diff --git a/src/clipboard.js b/src/clipboard.js index e566eda..e3c5e5d 100644 --- a/src/clipboard.js +++ b/src/clipboard.js @@ -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);