このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Clipboard: clipboardchange イベント

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

clipboardchangeClipboard インターフェイスのイベントで、システムのクリップボードのコンテンツが何らかの方法で変更された際に発生します。例えば、システムのコピーコマンドや、Clipboard.writeText() などの API メソッドによって変更された場合などが該当します。

clipboardchange イベントは、持続的な有効化が行われた場合、または clipboard-read 権限が付与された後のみ発生します。

構文

このイベント名を addEventListener() などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。

js
addEventListener("clipboardchange", (event) => { })

onclipboardchange = (event) => { }

イベント型

ClipboardChangeEvent です。 Event から継承しています。

Event ClipboardChangeEvent

システムのコピーコマンドの待ち受け

この例では、システムのコピーコマンドを待ち受けし、クリップボードにコピーされたコンテンツを表示させる方法を示します。

HTML

HTML は 3 つの <p> 要素で構成されています。1 つはクリップボードの内容を表示させるためのもの、残りの 2 つはコピー用のサンプルテキストを含むものです。

html
<p id="output">コピーされたテキスト:</p>

<p>
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a mattis purus.
  Donec at ipsum libero. Maecenas at dictum turpis. Vivamus eget aliquet augue.
  Aenean tempor dictum posuere. Vestibulum vehicula, nulla ac convallis feugiat,
  tortor velit lobortis est, vitae convallis velit libero vel urna. Suspendisse
  potenti. In bibendum ex et pellentesque gravida. Phasellus magna risus,
  euismod vitae sem in, viverra venenatis lacus. Sed dignissim risus eu congue
  consequat. Vestibulum nec feugiat libero. Maecenas quis sodales lorem, eu
  luctus nisl. Cras vel diam sed lacus finibus elementum sed sed nunc.
</p>

<p>
  Nam ac metus eget est bibendum pulvinar. Nunc a venenatis lorem. Lorem ipsum
  dolor sit amet, consectetur adipiscing elit. In dignissim, arcu ornare luctus
  pharetra, dui velit faucibus leo, ac posuere ipsum risus vel ligula. Morbi
  varius, felis et ornare efficitur, tortor erat imperdiet lacus, non rhoncus
  lectus sapien sit amet augue. Suspendisse potenti. Sed fringilla mi augue, at
  laoreet felis varius in. Donec venenatis gravida lacus ut rutrum. Donec
  suscipit egestas justo. Proin semper nibh tortor, sit amet elementum metus
  placerat quis. Sed consectetur leo sed lorem varius, sit amet ultrices sem
  tincidunt. Vivamus facilisis at velit eget commodo.
</p>

JavaScript

このスクリプトでは、まず出力用の <p> 要素への参照を取得します。次に、clipboardchange イベントハンドラーをブラウザーの Clipboard オブジェクトに対して定義します。イベントが発生すると、Clipboard.readText() メソッドを呼び出し、クリップボードにコピーされたばかりのテキストを読み取ります。結果が返されると、それを出力用段落の textContent の値として設定します。

js
const outputPara = document.querySelector("#output");

navigator.clipboard.addEventListener("clipboardchange", (event) => {
  navigator.clipboard
    .readText()
    .then((text) => (outputPara.textContent = `コピーされたテキスト: ${text}`));
});

結果

レンダリングされた例は以下の通りです。

例文からテキストを選択し、Ctrl + C(Mac をお使いの場合は Cmd + C)を使用してクリップボードにコピーしてみてください。まず試す際は、クリップボードの内容を読み取るためにその権限を要求するプロンプトが表示されます。その後(またはそれ以降の試行ではすぐに)、コピーしたテキストが UI 上部の出力段落に表示されるはずです。

仕様書

Specification
Clipboard API and events
# eventdef-globaleventhandlers-clipboardchange

ブラウザーの互換性

関連情報