JavaScriptでコピペを禁止する方法について書いています。
copyイベントとpasteイベントを使うことで、コピーもペーストも禁止することが可能です。
テキストボックス・テキストエリアのコピペを禁止する
テキストボックスとテキストエリアに対して、コピペを無効にする方法を紹介します。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>コピペ禁止</title>
</head>
<body>
<input id="testText" type="text" value="テスト文字列123" /><br />
<textarea id="testTextArea">テスト文字列123</textarea>
<script>
window.onload = () => {
const testText = document.querySelector("#testText");
const testTextArea = document.querySelector("#testTextArea");
testText.addEventListener('copy', function(event) {
event.preventDefault();
console.log("テキストボックスはコピー禁止です");
});
testText.addEventListener('paste', function(event) {
event.preventDefault();
console.log("テキストボックスはペースト禁止です");
});
testTextArea.addEventListener('copy', function(event) {
event.preventDefault();
console.log("テキストエリアはコピー禁止です");
});
testTextArea.addEventListener('paste', function(event) {
event.preventDefault();
console.log("テキストエリアはペースト禁止です");
});
}
</script>
</body>
</html>
HTMLの解説
コピーとペーストを禁止するテキストボックス(#testText
)とテキストエリア(#testTextArea
)を用意しています。
このふたつの入力エリアに対して、JavaScriptでcopy
・paste
イベントを処理してコピペ禁止にします。
JavaScriptの解説
「window.onload
」を使って、画面読み込み時に処理を行っています。
最初にテキストボックス(#testText
)を取得してtestText
変数に入れています。
そして、テキストエリア(#testTextArea
)を取得してtestTextArea
変数に入れています。
そのあとにそれぞれの要素に対して、イベント時に処理をするようにaddEventListener
メソッドを使ってイベントを追加しています。
最初にテキストボックス(#testText
)に対してcopy
イベントがおきたとき、次にpaste
イベントがおきたときの処理を追加しています。
イベントが起きた時に「event.preventDefault()
」の処理をしています。
これで、イベント発生時にブラウザのデフォルト処理を制御します。これによって、コピーとペーストされるのを防いでいます。
テキストエリア(#testTextArea
)にも同様の処理をしています。
動作確認
実際に動作を確認すると、テキストボックスとテキストエリアで、コピーやペーストができないことが確認できました。
また、イベントが発生しているのでコンソールにメッセージが表示されています。
ページ全体のコピペを禁止する
ページ全体でコピペを禁止するサンプルコードです。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>コピペ禁止</title>
</head>
<body>
<p>テスト文字列123テスト文字列<br />123テスト文字列123テスト文字列123</p>
<input type="text" value="テスト文字列123" /><br />
<textarea>テスト文字列123</textarea>
<script>
window.onload = () => {
document.addEventListener("copy", function (event) {
event.preventDefault();
console.log("このページではコピーできません!");
});
document.addEventListener("paste", function (event) {
event.preventDefault();
console.log("このページではペーストできません!");
});
}
</script>
</body>
</html>
HTMLの解説
コピーやペーストの対象になる要素として、p
タグ・input
タグ・textarea
タグを用意しています。
それぞれにcopy
・paste
イベントをつけるのではなく、ドキュメント全体でコピペを禁止するようにします。
JavaScriptの解説
画面を読み込んだ時に処理しています。(window.onload
)
document
に対して、addEventListener
メソッドを使って、copy
・paste
イベントを追加しています。
イベントの処理で「event.preventDefault()
」とやっています。
これで、ブラウザのデフォルトの処理をキャンセルして、コピーとペーストをできなくしています。
動作確認
実際に動作を確認すると、下記のようにそれぞれの要素でコピー・ペーストができないことが確認できました。
終わりに
今回はJavaScriptでコピペを禁止する処理を書いてみました。
それぞれの要素にcopy
・paste
イベントを追加して、「event.preventDefault()
」を処理時に呼び出すことで
コピーとペーストを禁止することができました。
また、documentに対して処理することで、ページ全体でコピペを禁止することができました。
コメント