(Sample)
今回は、Webページ上で右クリックを禁止したり、テキストを選択できないようにする方法について解説します。
「自分のページのテキストをコピーされたくない!」
「Webアプリの操作画面で誤操作を防ぎたい!」
そんなときに使えるテクニックですが、使いすぎはユーザー体験を損ねる可能性もあるので、その点もあわせて解説します。
実現できること
このサンプルでは、次の2つの機能が実装されています。
| 機能 | 説明 | 
|---|---|
| 右クリック禁止 | コンテキストメニュー(「コピー」「検証」など)を表示させない | 
| テキスト選択禁止 | テキストのドラッグ選択やコピーをできなくする | 
CSSでテキスト選択を禁止する
body {
  -webkit-user-select: none; /* Safari用 */
  -moz-user-select: none;    /* Firefox用 */
  -ms-user-select: none;     /* IE/Edge用 */
  user-select: none;         /* 標準仕様 */
}
user-select: none; の意味
このプロパティは「ユーザーがテキストを選択できるかどうか」を設定します。
| 値 | 意味 | 
|---|---|
none | テキスト選択不可(完全に無効) | 
text | テキストは選択可能(標準動作) | 
all | ダブルクリックなどで全文選択される | 
補足:ベンダープレフィックスとは?
各ブラウザで仕様が異なる時期があったため、互換性のために以下のような接頭語(プレフィックス)が必要でした。
-webkit-:SafariやChrome系-moz-:Firefox-ms-:Internet Explorer / Edge(旧)
JavaScriptで選択と右クリックを完全ブロック!
選択の開始を防ぐ
document.addEventListener("selectstart", function (e) {
  e.preventDefault();
});
これは、テキストの選択が始まるタイミングのイベントを検知して、その動作をキャンセルします。
右クリックメニューを無効化
document.addEventListener("contextmenu", function (e) {
  e.preventDefault();
});
右クリックメニュー(=context menu)が開こうとしたときに、e.preventDefault() でキャンセルしています。
これにより、「右クリック → 検証」「画像を保存」「テキストをコピー」などができなくなります。
ユースケース:いつ使うべき?
適している場面
- 公開前の試作ページなどで不要な操作を防ぎたい
 - POSシステムなど業務用Webアプリの「固定操作」画面
 - PDFビューアやオンライン教材などで、コピー防止をしたい
 
適していない場面
- 一般的なWebサイト(ブログ、ニュース記事など)
 - アクセシビリティが重要なサービス(教育・官公庁系など)
 
テキスト選択や右クリックができないと、ユーザーが不便に感じる可能性があるため、安易な使用は控えましょう。
回避されるリスクも知っておこう
たとえ選択や右クリックを禁止しても…
- ソースコードはブラウザの「開発者ツール」で見られます
 Ctrl+Cなどのキーボードショートカットでコピーされることもあります- JavaScriptを無効化すれば制限は回避可能
 
つまり、このような制限は「ちょっとした妨害」程度にしかなりません。
今後の学習の指針
この機能をきっかけに、次のようなステップアップを目指しましょう!
- JavaScriptイベントの基本をマスターする
→preventDefault()やaddEventListener()の使い方をしっかり理解! - アクセシビリティについて学ぶ
→ 全ユーザーが快適に使えるWeb設計とは何かを考えるきっかけになります。 - コンテンツ保護のより効果的な方法を知る
→ サーバーサイドでの認証、透かし、PDFへの変換など、より堅牢な保護方法も検討しましょう! 
「選択できない・右クリックできない」という一見シンプルな機能にも、多くのテクニックや注意点が詰まっているんです。
ぜひ、試しながら理解を深めていってくださいね!