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

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

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

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

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

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

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

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

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

minify前のコード

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

(function () {
  var d = document,
    s = ['userSelect', 'webkitUserSelect', 'mozUserSelect', 'msUserSelect'],
    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[t] = 'auto';
    });
    a.forEach(function (n) {
      l.addEventListener(n, p, true);
    });
  });
})();