Element: copy イベント

copy イベントは、ユーザーがブラウザーのユーザーインターフェイスからコピー操作を実行したときに発生します。

バブリング あり
キャンセル
インターフェイス ClipboardEvent
イベントハンドラープロパティ oncopy

このイベントの既定の動作は、 (もしあれば) 選択範囲をクリップボードへコピーすることです。

このイベントのハンドラーは、 setData(format, data) をイベントの ClipboardEvent.clipboardData プロパティに対して呼び出すことで、クリップボードの内容を変更したり、 event.preventDefault() を使用してイベントの既定の動作を取り消したりすることができます。

ただし、ハンドラーがクリップボードのデータを読み取ることはできません。

仮想の copy イベントを構築して配信することもできますが、システムのクリップボードには影響を与えません。

ライブデモ

HTML

<div class="source" contenteditable="true">Try copying text from this box...</div>
<div class="target" contenteditable="true">...and pasting it into this one</div>

JS

const source = document.querySelector('div.source');

source.addEventListener('copy', (event) => {
    const selection = document.getSelection();
    event.clipboardData.setData('text/plain', selection.toString().toUpperCase());
    event.preventDefault();
});

結果

仕様書

仕様書 状態
Clipboard API and events 草案

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
copy eventChrome 完全対応 58Edge 完全対応 ≤18Firefox 完全対応 ありIE 未対応 なしOpera 完全対応 45Safari 完全対応 ありWebView Android 完全対応 58Chrome Android 完全対応 58Firefox Android 完全対応 ありOpera Android 完全対応 43Safari iOS ? Samsung Internet Android 完全対応 7.0
clipboardDataChrome 完全対応 58Edge 完全対応 ≤18Firefox 完全対応 22IE 未対応 なしOpera 完全対応 45Safari 完全対応 ありWebView Android 完全対応 58Chrome Android 完全対応 58Firefox Android 完全対応 22Opera Android 完全対応 43Safari iOS ? Samsung Internet Android 完全対応 7.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明

関連情報