JavaScriptでページ内のコントロールやページでのコピーの操作を検出するコードを紹介します。
概要
テキストボックスなどHTMLページのコントロールの要素で、コピーの操作をしたことを検知したい場合があります。
要素の
copy
イベントのリスナを設定することでページやコントロールでのコピーの操作をするとイベントが発生する設定にできます。
書式
(HTML要素).addEventListener('copy', (イベントリスナの関数または無名関数) );
実装例
以下のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript">
window.onload = Page_Load;
function Page_Load() {
var text_box = document.getElementById("textbox1");
text_box.addEventListener('copy', TextBoxOnCopy);
}
function TextBoxOnCopy(event) {
var elem = document.getElementById("output");
elem.innerText = "コピーされました。";
}
</script>
</head>
<body>
<h2>テキストボックスのコピーの検出</h2>
<form action="" name="searchForm">
<input type="text" id="textbox1" value="ぺんぎんクッキー" />
</form>
<hr />
<div id="output"></div>
</body>
</html>
解説
ページの読み込み時にテキストボックスの要素を取得し、addEventListener()メソッドを呼び出し、copy イベントを設定します。
イベント発生時には、TextBoxOnCopy() 関数を呼び出します。
function Page_Load() {
var text_box = document.getElementById("textbox1");
text_box.addEventListener('copy', TextBoxOnCopy);
}
TextBoxOnCopy関数では、ページ下部の出力エリアの要素オブジェクトを取得し、"コピーされました。"のメッセージを表示します。
function TextBoxOnCopy(event) {
var elem = document.getElementById("output");
elem.innerText = "コピーされました。";
}
なお、インラインの無名関数を使用し場合は以下のコードになります。
function Page_Load() {
var text_box = document.getElementById("textbox1");
text_box.addEventListener('copy', function (event) {
var elem = document.getElementById("output");
elem.innerText = "コピーされました。";
});
}
実行結果
上記のHTMLページをWebブラウザで表示します。下図のページが表示されます。
テキストボックス内部の文字列を選択して、右クリックしポップアップメニューの[コピー]をクリックして選択します。
テキストボックスの内容がコピーされ、同時にページ下部に「コピーされました。」のメッセージが表示されます。
テキストボックスのコピーの操作を検出できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-06-04
作成日: 2024-06-04