こうこく
作 ▸
改 ▸

選択禁止・右クリック禁止・キーボード操作禁止を全部解除するブックマークレット

ネットをしてると、テキストを選択できないサイトや右クリックメニューが開けないサイト、Ctrl + Cでコピーできないサイト、F12キーを押してもブラウザの開発者ツールが開かないサイトなどがあります。

すごくイライラするので全部解除できるブックマークレットを作りました。

↓のボタンをブックマークバーにドロップすると登録できます。コードをコピーして、適当なサイトで開発者ツールのコンソールにペーストして実行しても試せます。

やってることは大まかに以下の通りです。詳細には、対象箇所によって微妙にかけてるものが違います。

  • mousedown イベントハンドラを除去 or イベント伝播防止。(選択禁止回避)
  • contextmenu イベントハンドラを除去 or イベント伝播防止。(右クリック禁止回避)
  • selectstart イベントハンドラを除去 or イベント伝播防止。(選択禁止回避)
  • copy イベントハンドラを除去 or イベント伝播防止。(コピー禁止回避)
  • keydown, keypress, keyup イベントハンドラを除去 or イベント伝播防止。(F12キーなどの禁止回避)
  • 全要素のスタイルの user-select 系の値を auto で上書き。(選択禁止回避)

例えばそこらへんのテキスト選択禁止のサイトとかで使うと、テキストを選択できるようになります。ただし対象サイトの本来の挙動を妨げる可能性も多分にあります。やりたいことやったらリロードして普通に閲覧しようね。

これで対応できないサイトがあったら随時更新予定。

[2021-11-16 更新] 以下の記事を参考に強化しました。以前と挙動が異なる可能性があります。コメントくださった方、記事の筆者様、ありがとうございました。

テキスト選択や右クリックが禁止されているページで、それを可能にする方法 | Wynes : TECH BLOG

[2022-01-19 更新] キーボード操作禁止を解除できないサイトを見つけたのでいじりました。

[2022-11-01 更新] こちらの記事 を参考に user-select!important 対策しました。

minify前のコード

せっかくなので載せておきます

(function () {
  var d = document,
    s = ['user-select', '-webkit-user-select', '-moz-user-select', '-ms-user-select'],
    a = ['mousedown', 'selectstart', 'copy', 'contextmenu'],
    p = function (e) {
      e.stopPropagation();
    };
  ['mousedown', 'contextmenu', 'selectstart', 'copy', 'keydown', 'keypress', 'keyup'].forEach(function (n) {
    d.addEventListener(n, p, true);
  });
  d.body.addEventListener('contextmenu', p);
  Array.prototype.forEach.call(document.querySelectorAll('*'), function (l) {
    s.forEach(function (t) {
      l.style.setProperty(t, 'auto', 'important');
    });
    a.forEach(function (n) {
      l.addEventListener(n, p, true);
    });
  });
})();
この記事に何かあればこちらまで (非公開)