Copie dans le presse-papiers avec jQuery/js dans Chrome
Je sais que ce genre de question a été posée de nombreuses fois, y compris: Comment puis-je copier dans le presse-papiers en JavaScript? ou Comment faire pour copier du texte dans le client du presse-papiers à l'aide de jQuery?, je suis de réduire la portée:
Condition:
- fonctionne très bien sous Google Chrome (ce serait bien si la croix-navigateur, mais pas nécessaire)
- sans flash
Existe-t-il une solution ou une solution de contournement?
- la copie sans flash ?? que voulez-vous dire ????
- l'aide d'intégrer flash est juste un exagérée, mais vraiment de la croix-navigateur astuce:stackoverflow.com/a/3953655/1299675
- Il y a un
copy
commande en chrome.let a = 'Foo Bar'; copy(a);
Puis 'Foo Bar' sera dans votre presse-papiers.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
document.execCommand('copy')
ouaddEventListener('copy')
, ou une combinaison des deux.1. copier la sélection sur des événements personnalisés
Si vous voulez déclencher une
copy
sur un autre événement quectrl-c
ou cliquez-droit sur la copie, vous utilisezdocument.execCommand('copy')
. Il va copier ce qui est actuellement sélectionné. Comme ça, on mouseup par exemple:EDIT:
document.execCommand('copy'
) est pris en charge uniquement parChrome 42
,IE9
etOpera 29
, mais seront pris en charge par firefox 41 (prévue pour septembre 2015). Notez que IE normalement demande la permission d'accéder au presse-papiers.https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand
2. copie du contenu personnalisé sur copie déclenchée par l'utilisateur
Ou, vous pouvez utiliser
addEventListener('copy')
, cela va interférer avec la copie de l'événement et vous pouvez mettre le contenu que vous voulez. Cette supposons que l'utilisateur déclenche la copie.EDIT:
Sur Chrome, Firefox et Safari, l'événement a la
clipboardData
objet avecsetData
méthode. SurIE
, leclipboardData
objet est une propriété de la fenêtre. Donc, cela peut fonctionner sur tous les principaux navigateurs à condition de valider où estclipboardData
.https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent/clipboardData
https://msdn.microsoft.com/en-us/library/ms535220(v=vs. 85).aspx
3. un peu des deux
À l'aide d'une combinaison, vous pouvez copier le contenu personnalisé sur voulu événements. Ainsi, le premier événement déclenche
execCommand
, puis lelistener
interfère. Par exemple, mettre du contenu personnalisé sur cliquez sur une div.À l'aide de ce dernier, on suppose que les deux approches sont pris en charge, à compter de juillet 2015, il ne fonctionne que sur
Chrome 43
(peut-être 42 je ne pouvais pas tester) etIE
au moins 9 et 10. AvecFirefox 41
soutenirexeccommand('copy')
, il devrait fonctionner aussi bien.Noter que pour la plupart de ces méthodes et propriétés sont déclarées comme expérimental (ou même déconseillé pour IE), c'est donc être utilisé avec prudence, mais il semble comme il est de plus en plus pris en charge.
Jouer avec tous les exemples: https://jsfiddle.net/jsLfnnvy/12/
Je viens de trouver une autre incroyable repo Github.
Prise En Charge Du Navigateur:
Variable chaîne de caractères peut copier dans le presse-papiers à l'aide de ci-dessous du code js.
En fait pour ceux essayant de se faire je l'ai eu à travailler dans chrome basé sur @JulianGregoire s réponse.
J'ai réécrit le code pour le rendre un peu mieux, à mon avis:
Si vous n'avez pas l'esprit IE/Safari, vous pouvez utiliser la suite (nouveau) API:
Lisez la documentation ici
Attention: j'ai essayé exactement le même script de Julien Grégoire, cependant, il n'était pas le déclenchement de la oncopy écouteur d'événement. La raison, j'ai eu l'utilisateur de sélectionner le CSS pour la balise "body".
Alors assurez-vous de le supprimer, ou
initial
sur l'élément de l'écouteur d'événement est attaché.Exemple: https://jsfiddle.net/faimmedia/jsLfnnvy/80/
Si vous êtes à l'aide de knock-out, comme moi (pour une raison que je le suis toujours), vous aurez envie de prendre un coup d'oeil à cette question/réponse:
Comment faire KnokoutJS et ClipboardJS travailler ensemble?
Puis d'appeler la fonction avec le texte et qui devrait fonctionner.