DEV Community

Cover image for Copy rich HTML with the native Clipboard API 📋
Ste Griffiths
Ste Griffiths

Posted on • Originally published at stegriff.co.uk on

6 1

Copy rich HTML with the native Clipboard API 📋

The relatively new Clipboard API in browsers lets you load up the user’s clipboard as though they’d copied something themselves.

Copying text or images is fairly well documented, but examples writing rich text (as HTML) are harder to come by.

At time of writing, this is implemented in Chrome 86+ and in Safari. I got the content for this post from the Glitch project created by dsleeps at Google.

How to copy rich text HTML onto the Clipboard API

This sample assumes you have a <div class="js-output"></div> which contains your HTML to copy.

I’ll cut right to it:

try {
  const content = document.getElementsByClassName('js-output')[0].innerHTML;
  const blobInput = new Blob([content], {type: 'text/html'});
  const clipboardItemInput = new ClipboardItem({'text/html' : blobInput});
  navigator.clipboard.write([clipboardItemInput]);
} catch(e) {
  // Handle error with user feedback - "Copy failed!" kind of thing
  console.log(e);
}

Enter fullscreen mode Exit fullscreen mode

Key things:

  • Get the HTML string (I’m using innerHTML of an element for this)
  • Create a new Blob.
    • Param one must be an Array-like or a USVString value. So we wrap our HTML content in an array.
    • Param two is an options object, where we set the MIME type.
  • Create a ClipboardItem around the blob, specifying MIME type again
  • Finally, write the ClipboardItem to the clipboard API.

Demo

I have a quickly-made Vue app with a ‘Copy to Clipboard’ button at https://stegriff.github.io/deployment-complete/. Source repo at https://github.com/stegriff/deployment-complete.

I hope this tutorial helps you! What will you make? 📋

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay