Comment copier le texte d'une div dans le presse-papiers? J'ai une div et dois ajouter un lien qui ajoutera le texte au presse-papiers. Y a-t-il une solution à cela?
<p class="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>
<a class="copy-text">copy Text</a>
Après avoir cliqué sur copier du texte, puis sur Ctrl+ V, il doit être collé.
Réponses:
Modifier à partir de 2016
À partir de 2016, vous pouvez désormais copier du texte dans le presse-papiers dans la plupart des navigateurs, car la plupart des navigateurs ont la possibilité de copier par programmation une sélection de texte dans le presse-papiers à l'aide de
document.execCommand("copy")
cette méthode .Comme pour certaines autres actions dans un navigateur (comme l'ouverture d'une nouvelle fenêtre), la copie dans le presse-papiers ne peut être effectuée que via une action utilisateur spécifique (comme un clic de souris). Par exemple, cela ne peut pas être fait via une minuterie.
Voici un exemple de code:
Voici une démo un peu plus avancée: https://jsfiddle.net/jfriend00/v9g1x0o6/
Et, vous pouvez également obtenir une bibliothèque pré-construite qui le fait pour vous avec clipboard.js .
Partie ancienne et historique de la réponse
La copie directe dans le presse-papiers via JavaScript n'est autorisée par aucun navigateur moderne pour des raisons de sécurité. La solution de contournement la plus courante consiste à utiliser une fonction Flash pour copier dans le presse-papiers qui ne peut être déclenchée que par un clic direct de l'utilisateur.
Comme déjà mentionné, ZeroClipboard est un ensemble de code populaire pour gérer l'objet Flash pour effectuer la copie. Je l'ai utilisé. Si Flash est installé sur le dispositif de navigation (ce qui exclut le mobile ou la tablette), cela fonctionne.
La solution de contournement la plus courante suivante consiste simplement à placer le texte lié au presse-papiers dans un champ de saisie, à déplacer le focus sur ce champ et à conseiller à l'utilisateur d'appuyer sur Ctrl+ Cpour copier le texte.
D'autres discussions sur le problème et les solutions de contournement possibles peuvent être trouvées dans ces messages antérieurs de débordement de pile:
Comment copier dans le presse-papiers en JavaScript?
Comment copier du texte dans le presse-papiers du client à l'aide de jQuery?
Comment pouvez-vous copier dans le presse-papiers sans Flash?
Ces questions demandant une alternative moderne à l'utilisation de Flash ont reçu beaucoup de votes positifs et aucune réponse avec une solution (probablement parce qu'aucune n'existe):
Alternative HTML5 au ZeroClipboard basé sur flash pour une copie sécurisée des données dans le presse-papiers?
Copier dans le presse-papiers sans Flash
Internet Explorer et Firefox possédaient auparavant des API non standard pour accéder au presse-papiers, mais leurs versions plus modernes ont déconseillé ces méthodes (probablement pour des raisons de sécurité).
Il existe un effort de normalisation naissant pour essayer de trouver un moyen "sûr" de résoudre les problèmes les plus courants du presse-papiers (nécessitant probablement une action spécifique de l'utilisateur comme la solution Flash l'exige), et il semble qu'il puisse être partiellement implémenté dans le dernier versions de Firefox et Chrome, mais je ne l'ai pas encore confirmé.
la source
document.execCommand("copy")
dans suffisamment de circonstances pour pouvoir l'utiliser pour cela. Donc, je m'efforce de garder ma réponse à jour (qui a été rédigée à l'origine il y a presque 2 ans). Nous n'avons toujours pas encore de solution fiable pour Safari autre que la présélection du texte et dire à l'utilisateur d'appuyer manuellement sur Ctrl + C, mais au moins des progrès sont en cours ailleurs.document.execCommand("copy")
donc ce code devrait maintenant fonctionner dans Safari 10.Il existe une autre méthode non Flash (en dehors de l' API Clipboard mentionnée dans la réponse de jfriend00 ). Vous devez sélectionner le texte, puis exécuter la commande
copy
pour copier dans le presse-papiers le texte actuellement sélectionné sur la page.Par exemple, cette fonction copiera le contenu de l'élément passé dans le presse-papiers (mis à jour avec suggestion dans les commentaires de PointZeroTwo ):
Voilà comment cela fonctionne:
document.execCommand("copy")
.Vous pouvez voir une démo rapide ici:
Le problème principal est que tous les navigateurs ne prennent pas en charge cette fonctionnalité pour le moment, mais vous pouvez l'utiliser sur les principaux à partir de:
Mise à jour 1: Cela peut être réalisé également avec une solution JavaScript pure (pas de jQuery):
Notez que nous transmettons l'id sans le # maintenant.
Comme madzohan l'a signalé dans les commentaires ci-dessous, il y a un problème étrange avec la version 64 bits de Google Chrome dans certains cas (en exécutant le fichier localement). Ce problème semble être résolu avec la solution non jQuery ci-dessus.
Madzohan a essayé dans Safari et la solution a fonctionné mais en utilisant
document.execCommand('SelectAll')
au lieu d'utiliser.select()
(comme spécifié dans le chat et dans les commentaires ci-dessous).Comme PointZeroTwo le souligne dans les commentaires , le code pourrait être amélioré afin de renvoyer un résultat de réussite / échec. Vous pouvez voir une démo sur ce jsFiddle .
MISE À JOUR: COPIE GARDANT LE FORMAT DE TEXTE
Comme un utilisateur l'a souligné dans la version espagnole de StackOverflow , les solutions répertoriées ci-dessus fonctionnent parfaitement si vous souhaitez copier le contenu d'un élément littéralement, mais elles ne fonctionnent pas si bien si vous souhaitez coller le texte copié au format (comme il est copié dans un
input type="text"
, le format est "perdu").Une solution pour cela serait de copier dans un contenu modifiable
div
puis de le copier en utilisant leexecCommand
de la même manière. Voici un exemple - cliquez sur le bouton Copier puis collez-le dans la zone de contenu modifiable ci-dessous:Et dans jQuery, ce serait comme ça:
la source
aux.style.position = "fixed";
aux.style.top = 0;
au-dessus de l'appendChild
appel.clipboard.js est un bel utilitaire qui permet de copier du texte ou des données HTML dans le presse-papiers sans utiliser Flash. C'est très simple à utiliser; il suffit d'inclure le .js et d'utiliser quelque chose comme ceci:
clipboard.js est également sur GitHub .
Modifier le 15 janvier 2016: La réponse du haut a été modifiée aujourd'hui pour faire référence à la même API dans ma réponse publiée en août 2015. Le texte précédent demandait aux utilisateurs d'utiliser ZeroClipboard. Je veux juste être clair que je n'ai pas retiré cela de la réponse de jfriend00, plutôt l'inverse.
la source
La simplicité est la sophistication ultime.
Si vous ne voulez pas que le texte à copier soit visible:
jQuery:
HTML:
la source
Avec des sauts de ligne (Extension de la réponse d'Alvaro Montoro)
la source
Vous pouvez utiliser ce code pour copier la valeur d'entrée dans la page du Presse-papiers en cliquant sur un bouton
C'est Html
Ensuite, pour ce html, nous devons utiliser ce code JQuery
Ceci est la solution la plus simple pour cette question
la source
Approche Mieux encore sans flash ou toute autre exigence est clipboard.js . Tout ce que vous avez à faire est d'ajouter
data-clipboard-target="#toCopyElement"
un bouton, de l'initialisernew Clipboard('.btn');
et il copiera le contenu du DOM avec idtoCopyElement
dans le presse-papiers. Il s'agit d'un extrait qui copie le texte fourni dans votre question via un lien.Cependant, il ne fonctionne pas en safari, mais il fonctionne sur tous les autres navigateurs, y compris les navigateurs mobiles, car il n'utilise pas de flash.
la source
la source
la source
.addClass("hidden")
à la<input>
balise pour qu'elle ne s'affiche jamais dans le navigateur?Il est très important que le champ de saisie n'en ait pas
display: none
. Le navigateur ne sélectionnera pas le texte et ne sera donc pas copié. Utilisezopacity: 0
avec une largeur de 0px pour résoudre le problème.la source
C'est une méthode la plus simple pour copier le contenu
la source
Solution jQuery simple.
Doit être déclenché par le clic de l'utilisateur.
la source
vous pouvez simplement utiliser cette bibliothèque pour réaliser facilement l'objectif de copie!
https://clipboardjs.com/
ou
https://github.com/zeroclipboard/zeroclipboard
http://zeroclipboard.org/
la source
Le texte à copier est en entrée de texte, comme:
<input type="text" id="copyText" name="copyText">
et, lorsque vous cliquez sur le bouton ci-dessus, le texte doit être copié dans le presse-papiers, donc le bouton est comme:<button type="submit" id="copy_button" data-clipboard-target='copyText'>Copy</button>
Votre script doit être comme:Pour les fichiers CDN
Remarque :
ZeroClipboard.swf
etZeroClipboard.js
"le fichier doit être dans le même dossier que votre fichier en utilisant cette fonctionnalité, OU vous devez l'inclure comme nous l'incluons<script src=""></script>
sur nos pages.la source
La plupart des réponses proposées créent un ou plusieurs éléments d'entrée cachés temporaires supplémentaires. Étant donné que la plupart des navigateurs prennent actuellement en charge la modification du contenu div, je propose une solution qui ne crée pas d'élément (s) caché (s), préserve la mise en forme du texte et utilise la bibliothèque JavaScript ou jQuery pure.
Voici une implémentation squelette minimaliste utilisant le moins de lignes de codes possibles:
la source
La bibliothèque Clipboard-polyfill est une polyfill pour l'API de presse-papiers asynchrone moderne basée sur Promise.
installer dans CLI:
importer en tant que presse-papiers dans le fichier JS
exemple
Je l'utilise en bundle avec
require("babel-polyfill");
et l' ai testé sur du chrome 67. Tout est bon pour la production.la source
code html ici
CODE JS:
la source
vous pouvez copier un texte individuel en dehors du texte d'un élément HTML.
la source
Pure JS, sans onclick en ligne, pour les classes jumelées "contenu - bouton de copie". Serait plus confortable, si vous avez de nombreux éléments)
Prise en charge d'un navigateur plus ancien:
Afficher l'extrait de code
la source
Les deux fonctionnent comme un charme :),
JAVASCRIPT:
Aussi en html,
JQUERY: https://paulund.co.uk/jquery-copy-clipboard
la source