いくつかのウェブサイトでは、右クリックやテキストの選択・コピーを禁止する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));});})();
この記述は、無駄な変数宣言を省き、ループやネストを整理して簡潔にしています。
何をしているか?
- イベントの伝播を阻止:mousedown, contextmenu, copy などのイベントに対して stopPropagation() を実行。これにより、右クリック禁止やコピー禁止を行っているJavaScriptの効果を打ち消します。
- CSSでの禁止を解除:要素に指定されている user-select: none などのスタイルを auto !important に変更して、選択を可能にします。
- 全要素に適用:上記の処理を document.querySelectorAll('*') を使ってすべての要素に適用しています。
開発者モードのコンソールから上記を実行することで、全てが解除されます。
注意事項
自己責任で使用してください。
著作権のあるコンテンツや、規約で保護されているページでは、無断での複製・転載は法的に問題になることがあります。
学習や調査用途に限定した使用を推奨します。