docs.rodeo

MDN Web Docs mirror

Clipboard API

{{DefaultAPISidebar("Clipboard API")}} 

The Clipboard API provides the ability to respond to clipboard commands (cut, copy, and paste), as well as to asynchronously read from and write to the system clipboard.

[!NOTE] Use this API in preference to the deprecated {{domxref("document.execCommand()")}}  method for accessing the clipboard.

[!NOTE] This API is not available in Web Workers (not exposed via {{domxref("WorkerNavigator")}} ).

Concepts and usage

The system clipboard is a data buffer belonging to the operating system hosting the browser, which is used for short-term data storage and/or data transfers between documents or applications. It is usually implemented as an anonymous, temporary data buffer, sometimes called the paste buffer, that can be accessed from most or all programs within the environment via defined programming interfaces.

The Clipboard API allows users to programmatically read and write text and other kinds of data to and from the system clipboard in secure contexts, provided the user has met the criteria outlined in the Security considerations.

Events are fired as the result of {{domxref("Element/cut_event", "cut")}} , {{domxref("Element/copy_event", "copy")}} , and {{domxref("Element/paste_event", "paste")}}  operations modifying the clipboard. The events have a default action, for example the copy action copies the current selection to the system clipboard by default. The default action can be overridden by the event handler — see each of the events for more information.

Interfaces

Extensions to other interfaces

The Clipboard API extends the following APIs, adding the listed features.

Security considerations

The Clipboard API allows users to programmatically read and write text and other kinds of data to and from the system clipboard in secure contexts.

The specification requires that a user has recently interacted with the page in order to read from the clipboard (transient user activation is required). If the read operation is caused by user interaction with a browser or OS “paste element” (such as a context menu), the browser is expected to prompt the user for acknowledgement. For writing to the clipboard the specification expects that the page has been granted the Permissions API clipboard-write permission, and the browser may also require transient user activation. Browsers may place additional restrictions over use of the methods to access the clipboard.

Browser implementations have diverged from the specification. The differences are captured in the Browser compatibility section and the current state is summarized below:

Chromium browsers:

Firefox & Safari:

Firefox Web Extensions:

Examples

Accessing the clipboard

The system clipboard is accessed through the {{domxref("Navigator.clipboard")}}  global.

This snippet fetches the text from the clipboard and appends it to the first element found with the class editor. Since {{domxref("Clipboard.readText", "readText()")}}  returns an empty string if the clipboard isn’t text, this code is safe.

navigator.clipboard
  .readText()
  .then(
    (clipText) => (document.querySelector(".editor").innerText += clipText),
  );

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN