Clipboard: clipboardchange イベント
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
clipboardchange は Clipboard インターフェイスのイベントで、システムのクリップボードのコンテンツが何らかの方法で変更された際に発生します。例えば、システムのコピーコマンドや、Clipboard.writeText() などの API メソッドによって変更された場合などが該当します。
clipboardchange イベントは、持続的な有効化が行われた場合、または clipboard-read 権限が付与された後のみ発生します。
構文
このイベント名を addEventListener() などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。
addEventListener("clipboardchange", (event) => { })
onclipboardchange = (event) => { }
イベント型
ClipboardChangeEvent です。 Event から継承しています。
例
>システムのコピーコマンドの待ち受け
この例では、システムのコピーコマンドを待ち受けし、クリップボードにコピーされたコンテンツを表示させる方法を示します。
HTML
HTML は 3 つの <p> 要素で構成されています。1 つはクリップボードの内容を表示させるためのもの、残りの 2 つはコピー用のサンプルテキストを含むものです。
<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 の値として設定します。
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> |