右クリックと文字列選択を禁止する方法とそれを無効にするブックマークレット

ウェブページの文字列をコピーされないようにする方法として、右クリックを禁止する方法と文字列の選択を禁止する方法が考えられます。

右クリック禁止

右クリックを禁止するにはHTMLを次のように書きます。

<div oncontextmenu="return false;">テキスト</div>

右クリックをして表示されるメニューを「コンテキストメニュー」などと言いますが、これを無効にします。
「div」でなく「body」にこれを設定するとウェブページ全体で右クリックができなくなります。

文字列選択禁止

文字列の選択を禁止するには次のように書きます。

<div onselectstart="return false;">テキスト</div>

文字列を選択しようとしてもできません。
これも「body」に設定するとウェブページ全体で文字列選択ができなくなります。
※IE限定ですが「unselectable=”on”」を使う方法もあります。

サンプルページは次の通りです。

サンプルページ

無効にするブックマークレット

これらを無効にするブックマークレットを考えてみました。

選択可能

ブックマークツールバーまでドラッグしてください。あるいは右クリックからお気に入りに保存してください。

javascript:(function(){obs=document.all;for(i=0;i<obs.length;i++){obs[i].oncontextmenu='return true;';obs[i].onselectstart='return true;';}})()

bodyだけでなく、すべてのタグについて、onselectstartとoncontextmenuに「return true;」をセットします。

なお、ここに挙げた方法がすべてではありません。これら以外にも文字列選択を禁止する方法はあります。例えば「document.onmousedown=”return false;”」のようにドキュメントに対してクリックそのものを禁止したりする方法もあります。そのため、すべてのパターンに対応したブックマークレットを作るのはかなり面倒です。頻繁に利用するページならばブックマークレットを使うのは効果がありますが、そうでないならばソースを直に見てしまうのが確実です。

コメント

タイトルとURLをコピーしました