Clipboard

Le presse-papiers est un tampon de données utilisé pour le stockage ou le transfert à court terme de données, éventuellement entre documents ou applications.
Il est généralement mis en œuvre sous la forme d’une mémoire tampon temporaire, parfois appelée « tampon de collage », qui peut être accédé par la plupart ou tous les programmes de l’environnement via des interfaces de programmation définies.

Une application typique accède aux fonctionnalités du presse-papiers en associant des entrées utilisateur telles que des raccourcis clavier, des éléments de menus, etc. à ces interfaces.

L’interface Clipboard implémente l’API clipboard, qui fournit — si l’utilisateur ou l’utilisatrice accorde sa permission — un accès en lecture et en écriture au contenu du presse-papiers du système. L’API clipboard peut être utilisée pour implémenter les fonctionnalités couper, copier et coller dans une application web.

Le presse-papiers du système est exposé via la propriété globale Navigator.clipboard.

Les appels aux méthodes de l’objet Clipboard échoueront si l’utilisateur ou l’utilisatrice n’a pas accordé les permissions requises en utilisant l’API permissions, et la permission "clipboard-read" ou "clipboard-write" selon le besoin.

Note : En réalité, actuellement, les prérequis des navigateurs pour accéder au presse-papiers varient significativement. Veuillez consulter la section Clipboard availability pour plus de détails.

Toutes les méthodes de l’API clipboard fonctionnent de manière asynchrone ; elles renvoient une Promise qui est résolue une fois que l’accès au presse-papiers a réussi. La promesse est rejetée si l’accès au presse-papiers est refusé.

Méthodes

Clipboard est basé sur l’interface EventTarget, et inclut les méthodes de celle-ci.

read()
Demande des données arbitraires (telles que des images) depuis le presse-papiers, et renvoie une Promise. Quand les données ont été obtenues, la promesse est résolue avec un objet DataTransfer qui fournit les données.
readText()
Demande du texte depuis le presse-papiers du système ; renvoie une Promise qui est résolue avec une DOMString contenant le texte du presse-papiers une fois disponible.
write()
Écrit des données arbitraires dans le presse-papiers du système. Cette opération asynchrone signale quand elle a terminé en résolvant la Promise renvoyée.
writeText()
Écrit du texte dans le presse-papiers du système, renvoyant une Promise qui est résolue une fois que le texte est entièrement copié dans le presse-papiers.

Disponibilité du presse-papiers

L’API clipboard asynchrone est une addition relativement récente, et son processus de mise en œuvre dans les navigateurs n’est pas encore terminé. En raison de questions de sécurité et de complexités techniques, l’intégration de cette API se fait progressivement dans la plupart des navigateurs.

Par exemple, Firefox ne supporte pas encore les permissions "clipboard-read" et "clipboard-write", et l’accès aux méthodes pour lire et modifier le contenu du presse-papiers sont restreintes d’autres façons.

Pour les WebExtensions, vous pouvez demander les permissions "clipboardRead" et "clipboardWrite" afin de pouvoir utiliser clipboard.readText() et clipboard.writeText(). Les scripts de contenu appliqués à des sites HTTP n’ont pas accès à l’objet Clipboard. Voir extensions in Firefox 63.

De plus, read() et write() sont désactivées par défaut et requièrent de changer une préférence pour les activer. Consultez les tables de compatibilité de chaque méthode avant de les utiliser.

Spécifications

Spécification Statut Commentaire
Clipboard API and events
La définition de 'Clipboard' dans cette spécification.
Version de travail Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
ClipboardChrome Support complet 66Edge Aucun support NonFirefox Support complet 63IE Aucun support NonOpera Support complet 53Safari Aucun support NonWebView Android Support complet 66Chrome Android Support complet 66Firefox Android Support complet 63Opera Android Support complet 47Safari iOS Aucun support NonSamsung Internet Android Support complet Oui
readChrome Support complet 76Edge Aucun support NonFirefox Support complet 63
Notes Désactivée
Support complet 63
Notes Désactivée
Notes Currently works just like readText(); non-text content is not currently supported.
Désactivée From version 63: this feature is behind the dom.events.asyncClipboard.dataTransfer preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE Aucun support NonOpera Support complet 63Safari Aucun support NonWebView Android Support complet 76Chrome Android Support complet 76Firefox Android Support complet 63
Notes Désactivée
Support complet 63
Notes Désactivée
Notes Currently works just like readText(); non-text content is not currently supported.
Désactivée From version 63: this feature is behind the dom.events.asyncClipboard.dataTransfer preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android ?
readTextChrome Support complet 66Edge Aucun support NonFirefox Support complet 63
Notes
Support complet 63
Notes
Notes Firefox only supports reading the clipboard in browser extensions, using the "clipboardRead" extension permission.
IE Aucun support NonOpera Support complet 53Safari Aucun support NonWebView Android Support complet 66Chrome Android Support complet 66Firefox Android Support complet 63
Notes
Support complet 63
Notes
Notes Firefox only supports reading the clipboard in browser extensions, using the "clipboardRead" extension permission.
Opera Android Support complet 47Safari iOS Aucun support NonSamsung Internet Android Support complet Oui
writeChrome Support complet 76Edge Aucun support NonFirefox Support complet 63
Notes Désactivée
Support complet 63
Notes Désactivée
Notes Currently works exactly like writeText(), including the availability limitations currently imposed by Firefox.
Désactivée From version 63: this feature is behind the dom.events.asyncClipboard.dataTransfer preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE Aucun support NonOpera Support complet 63Safari Aucun support NonWebView Android Support complet 76Chrome Android Support complet 76Firefox Android Support complet 63
Notes Désactivée
Support complet 63
Notes Désactivée
Notes Currently works exactly like writeText(), including the availability limitations currently imposed by Firefox.
Désactivée From version 63: this feature is behind the dom.events.asyncClipboard.dataTransfer preference (needs to be set to true). To change preferences in Firefox, visit about:config.
Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android ?
writeTextChrome Support complet 66Edge Aucun support NonFirefox Support complet 63
Notes
Support complet 63
Notes
Notes Writing to the clipboard is available without permission in secure contexts and browser extensions, but only from user-initiated event callbacks. Browser extensions with the "clipboardWrite" permission can write to the clipboard at any time.
IE Aucun support NonOpera Support complet 53Safari Aucun support NonWebView Android Support complet 66Chrome Android Support complet 66Firefox Android Support complet 63
Notes
Support complet 63
Notes
Notes Writing to the clipboard is available without permission in secure contexts and browser extensions, but only from user-initiated event callbacks. Browser extensions with the "clipboardWrite" permission can write to the clipboard at any time.
Opera Android Support complet 47Safari iOS Aucun support NonSamsung Internet Android Support complet Oui

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.