Bonjour,

Je souhaite copier un lien dans le presse-papier en cliquant sur un bouton. Le tout avec jQuery.
Mon bouton est un lien, et donc je souhaite copier le contenue de l'attribut href dans le presse papier.

Voici mon code jQuery. La console me dit que .select() n'est pas une fonction.

J'ai beau regarder plusieurs exemples sur le net, je sèche :

$('.copy_button').on( 'click', function(e){
        e.preventDefault();
        $(this).attr('href').select();
        document.execCommand('copy');
    });

Merci pour votre aide ;)

4 réponses


Maenhyr
Réponse acceptée

Bonjour,

voici la doc pour la fonction select() : https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select. Elle ne fonctionne que pour des inputs.

Pour réaliser ton copy to clipboard, tu as deux solutions :
1) tu utilises document.createRange() et range.selectNode() (https://developers.google.com/web/updates/2015/04/cut-and-copy-commands)
2) tu crées un textarea invisible, tu lui mets le contenu et tu utilises select() (https://clipboardjs.com/)

RiderFx3
Auteur

Merci pour ta réponse je vais regarder ces documentations de suite ;)

RiderFx3
Auteur

Ok j'ai fait comme ça et ça fonctionne merci ;)

$('.copy_button').on( 'click', function(e){
        e.preventDefault();
        copyToClipboard( $(this).attr('href') );
    });

    function copyToClipboard(element) {
        var $temp = $("<input>");
        $("body").append($temp);
        $temp.val(element).select();
        document.execCommand("copy");
        $temp.remove();
    }

Pas mal, par contre je changerais le nom du paramètre element pour text, car tu lui passes du texte et non un élement Js ou jQuery.