Je ne sais pas pourquoi cela a été si difficile pour moi aujourd'hui, mais pour une raison quelconque, je n'arrive pas à obtenir qu'il copie l'URL actuelle dans le presse-papiers. Dans l'ensemble, je cherche un moyen de le faire sans besoin de créer des éléments de texte cachés.
Voici ce que j'essaie jusqu'à présent:
var shareBtn = document.querySelector(".share-button");
shareBtn.addEventListener('click', function(event) {
var cpLink = window.location.href;
cpLink.select();
try {
var successful = document.execCommand('copy');
var msg = successful ? 'successful' : 'unsuccessful';
console.log('Copy command was ' + msg);
} catch (err) {
console.log('Oops, unable to copy');
}
event.preventDefault;
});
Lorsque j'essaie de m'y prendre en utilisant la fonction .select()
j'obtiens cette erreur: t.select is not a function
Je ne suis donc pas sûr à 100% de la meilleure façon de procéder. Encore une fois, sans utiliser jQuery (ou toute autre bibliothèque JS) et sans utiliser une sorte de champ de texte caché.
Malheureusement, il n'y a pas d'API standard pour les opérations du presse-papiers, nous nous retrouvons donc avec la manière hacky d'utiliser un élément HTML input
pour répondre à nos besoins. L'idée est de créer une entrée, de définir sa valeur sur l'URL du document courant, de sélectionner son contenu et d'exécuter copy
.
Nous nettoyons ensuite le désordre au lieu de définir l'entrée sur caché et polluant le DOM.
var dummy = document.createElement('input'),
text = window.location.href;
document.body.appendChild(dummy);
dummy.value = text;
dummy.select();
document.execCommand('copy');
document.body.removeChild(dummy);