選択禁止・右クリック禁止・キーボード操作禁止を全部解除するブックマークレット
ネットをしてると、テキストを選択できないサイトや右クリックメニューが開けないサイト、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);
});
});
})();