* Update `action` sample * Update `alarms` sample * Update `bookmarks` sample * Update `browsingData` sample * Update `contentSettings` sample * Update `cookies/cookie-clearer` sample * Update `debugger` sample * Update wasm functional sample * Update `functional/cookbook.geolocation-contentscript` sample * Update `cookbook.geolocation-offscreen` sample * Update `cookbook.geolocation-popup` sample * Update `cookbook.offscreen-clipboard-write` sample * Update `cookbook.offscreen-dom` sample * Fix browsingData description * Fix bookmarks description * Update offscreen document descriptions * Update descriptions * Update browsingData description * Update descriptions for all api samples * Update descriptions for cookbook samples * Update api-samples/browsingData/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/action/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/contextMenus/basic/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/cookies/cookie-clearer/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/debugger/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update functional-samples/sample.favicon-cs/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update functional-samples/cookbook.sidepanel-site-specific/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/omnibox/new-tab-search/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/devtools/inspectedWindow/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Update api-samples/override/blank_ntp/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Apply suggestions from code review Co-authored-by: Joe Medley <jmedley@google.com> * Update wasm samples description * Update description * Update functional-samples/sample.co2meter/manifest.json Co-authored-by: Joe Medley <jmedley@google.com> * Apply suggestions from code review --------- Co-authored-by: Joe Medley <jmedley@google.com> Co-authored-by: Oliver Dunk <oliver@oliverdunk.com>
This recipe shows how to write a string to the system clipboard using the Offscreen document.
Context
As of January 2023, the web platform has two ways to interact with the clipboard: document.execCommand() and navigator.clipboard (see MDN's docs). Unfortunately, neither of these APIs are exposed to JavaScript workers. This means that in order for an extension to read from or write values to the system clipboard, the extension must do so in a web page. Enter the Offscreen API. This API was introduced to give extension developers an unobtrusive way to use DOM APIs in the background.
In the future, the Chrome team is planning to add clipboard support directly to extension service workers. As such, this recipe is written to make it as easy as possible to replace addToClipboard()'s offscreen document-based implementation with one that directly uses the appropriate clipboard API.
Running this extension
- Clone this repository.
- Load this directory in Chrome as an unpacked extension.
- Open the Extension menu and click the extension named "Offscreen API - Clipboard".
You will now have "Hello, World!" on your system clipboard.