Ibrahim S. Gerbiqi
Ibrahim S. Gerbiqi

Reputation: 264

How to save Clipboard.js value to string

I started using clipboards.js to copy the content of a div with the click of the button but now I need to save it to a string so I can delete new lines to be shown like 1 paragraph but I cannot access to data that is stored to clipboard

this function here is to save to clipboard using clipboard.js and you can see I was trying to save it to "var str2" but it shows this "Cannot read property '_target' of undefined"

_this.testClick = function () {
            var clipboard = new Clipboard('.clipboard');
            var str2 = clipboard.clipboardAction._target.innerText.replace(/\n|\r/g, "");
            _this.copyStringToClipboard(str2);
        };

and this is the function that copies again but without spaces

_this.copyStringToClipboard = function (str) {
            // Create new element
            var el = document.createElement('textarea');
            // Set value (string to be copied)
            el.value = str;
            // Set non-editable to avoid focus and move outside of view
            el.setAttribute('readonly', '');
            el.style = {
                position: 'absolute',
                left: '-9999px'
            };
            document.body.appendChild(el);
            // Select text inside element
            el.select();
            // Copy text to clipboard
            document.execCommand('copy');
            // Remove temporary element
            document.body.removeChild(el);
        }

how can I access to inner text or clipboard so I can save it to str2?

Upvotes: 1

Views: 498

Answers (1)

User863
User863

Reputation: 20039

Try using ClipboardJS() and success event

var clipboard = new ClipboardJS('.clipboard');

clipboard.on('success', function(e) {
    console.log(e.text);
    console.log(e.text.replace(/\n|\r/g, ""));
});
<script src="https://cdn.jsdelivr.net/npm/clipboard@2/dist/clipboard.min.js"></script>

<button class="clipboard" data-clipboard-text="Just 
because 
you can 
doesn't mean you should — clipboard.js">
    Copy
</button>

Upvotes: 2

Related Questions