JavaScript

右クリック禁止・コピー禁止を解除するjavascriptの仕組みと簡潔化

いくつかのウェブサイトでは、右クリックやテキストの選択・コピーを禁止するJavaScriptが使われています。

例えば、「この記事の内容を転載しないでください」などの理由で、右クリックメニューが無効になっていたり、文字列を選択できないようにされていることがあります。

この記事では、そうした制限を自己責任で一時的に解除するためのBookmarklet(ブックマークレット)をご紹介します。

右クリックおよび選択禁止の解除

javascript:(()=>{const p=e=>e.stopPropagation(),d=document;["mousedown","contextmenu","selectstart","copy","keydown","keypress","keyup"].forEach(e=>d.addEventListener(e,p,true));d.body?.addEventListener("contextmenu",p);d.querySelectorAll("*").forEach(el=>{["user-select","-webkit-user-select","-moz-user-select","-ms-user-select"].forEach(s=>el.style.setProperty(s,"auto","important"));["mousedown","selectstart","copy","contextmenu"].forEach(e=>el.addEventListener(e,p,true));});})();

この記述は、無駄な変数宣言を省き、ループやネストを整理して簡潔にしています。

何をしているか?

  1. イベントの伝播を阻止:mousedown, contextmenu, copy などのイベントに対して stopPropagation() を実行。これにより、右クリック禁止やコピー禁止を行っているJavaScriptの効果を打ち消します。
  2. CSSでの禁止を解除:要素に指定されている user-select: none などのスタイルを auto !important に変更して、選択を可能にします。
  3. 全要素に適用:上記の処理を document.querySelectorAll('*') を使ってすべての要素に適用しています。

開発者モードのコンソールから上記を実行することで、全てが解除されます。

注意事項

自己責任で使用してください。

著作権のあるコンテンツや、規約で保護されているページでは、無断での複製・転載は法的に問題になることがあります。

学習や調査用途に限定した使用を推奨します。

  • この記事を書いた人

九十九史恩

キーを叩いていないときは、都会や田舎の風景を探検しています。

よく読まれている記事

条件の0=0は全てが正であるを意味するSQL 1

SQLの条件に0=0のような記述を見かけます。 変わった書き方の条件ですが、これは「全てが正である」事を意味しており、結合条件の場合はCROSS JOINと同じです。 下記の例で言えば、結合するsub ...

DISTINCTを使わないで重複排除を考えるSQL 2

SQLのDISTINCTはEXISTSとかGROUP BYでなんとかする事もできます。 DISTINCTは暗黙的なソートがされますが、何のDBを使うにせよ過去のバージョンならともかく、最近のバージョン ...

RFC 5322に準拠させた正規表現言語別 3

RFC5322で定義されている正規表現を、各言語の正規表現に変化させた形になります。 完全な電子メール正規表現は存在しないので、結局のところ何かの公式基準に従っていたとしても、自分が携わるサービスのル ...

-JavaScript