Hello
Hello
Hello

How to copy a div's content with clipboard.js or zeroclipboard?

1.7k views Asked by At

I have some divs in my HTML and I want to copy the contents of a div when I click on that div.

<div class="container">Hello</div>
<div class="container">World</div>
<div class="container">LearnJS</div>

So when I click on first div, it will copy the "Hello" on the clipboard.

I searched this site and found some zeroclipboard and clipboard.js, but I don't know how can I use it; I'm new to jQuery.

How would I write a function that copies the div's inner text onclick?

1

There are 1 answers

3
Todd Sprang On BEST ANSWER

Sorry, here's a working solution. Just change your class from "container" to "c" or anything else to match the $('.c') selector below (container is a class used by Bootstrap, which is a very popular library). When you click one of the DIVs, the text will be selected and copied to the clipboard. Older browsers won't work, BTW.

$(function() {
    $('.c').on('click', function () {
        SelectText($(this)[0]);
        document.execCommand('copy');
    });

    function SelectText(element) {
        var doc = document, range, selection;
        if (doc.body.createTextRange) {
            range = document.body.createTextRange();
            range.moveToElementText(element);
            range.select();
        } else if (window.getSelection) {
            selection = window.getSelection();
            range = document.createRange();
            range.selectNodeContents(element);
            selection.removeAllRanges();
            selection.addRange(range);
        }
    }
});