【Brave】サイトの長押し禁止だけ解除できる?カスタムフィルターを試した結果【Android】

2026年8月31日(月) 20時00分

スクリプトブロック

Android版BraveアプリでJavaScript全体を止めず、サイト側の長押し禁止だけを解除できないかカスタムフィルターを検証した。

contextmenuやselectstart、CSSのuser-selectなど複数の方法を試した結果と、Braveのカスタムスクリプトレット対応状況をまとめる。

 

長押し禁止だけを解除できないか試してみた

Android版Braveアプリで、サイト側の機能を維持したまま長押し禁止だけを解除できないか試してみた。

検証対象は特定のサイトだが、ここでは仮に example.com とする。

Braveにはカスタムフィルターを追加できるため、長押しや文字選択を妨げていそうな処理だけを狙って無効化できないか検証した。

 

contextmenuだけでは変わらなかった

最初に試したのは contextmenu のイベントリスナーを対象とするフィルターだった。

example.com##+js(aeld, contextmenu)

しかし自分の環境では長押しできるようにはならなかった。

そこで selectstart やCSSによる文字選択禁止も考え、対象を増やしてみた。

example.com##+js(aeld, contextmenu)

example.com##+js(aeld, selectstart)
example.com###contentInner:style(-webkit-touch-callout:default !important;-webkit-user-select:text !important;user-select:text !important;)
example.com###contentInner *:style(-webkit-touch-callout:default !important;-webkit-user-select:text !important;user-select:text !important;)

これでも結果は変わらなかった。

 

タッチ操作や直接指定されたイベントも試した

次に touchstart や pointerdown などで preventDefault() が使われている可能性を考えた。

example.com##+js(aeld, /^(?:touchstart|touchend|pointerdown|pointerup)$/, preventDefault)

さらに addEventListener() ではなく、document.oncontextmenu などへ直接処理が設定されている可能性も考えてフィルターを追加した。

example.com##+js(set, document.oncontextmenu, noopFunc)

example.com##+js(set, document.onselectstart, noopFunc)
example.com##+js(set, document.ondragstart, noopFunc)
example.com##+js(set, document.onmousedown, noopFunc)
example.com##html:style(-webkit-user-select:text !important;user-select:text !important;-webkit-touch-callout:default !important;)
example.com##body:style(-webkit-user-select:text !important;user-select:text !important;-webkit-touch-callout:default !important;)

ここまで一括で適用してみたものの、自分が試したBraveでは長押しできる状態にはならなかった。

少なくとも今回のサイトでは、単純に contextmenu や user-select だけを解除すれば解決する仕組みではなかったようだ。

 

Android版Braveでは自由なカスタムスクリプトレットに制限がある

Braveにはカスタムスクリプトレットという高度な機能もある。

Brave公式ではデスクトップ版1.75から、ユーザーが独自のスクリプトレットを書いてWebページへ挿入できる機能が案内されている。

一方でAndroidとiOSへのカスタムスクリプトレット対応については、BraveのGitHubでモバイル向けの実装が機能要望として管理されている。

ここで注意したいのは、Braveで ##+js() を使った処理がすべて利用できないという意味ではないことだ。

Braveの広告ブロック機能自体ではAndroidでもscriptletが使われている。ただしデスクトップ版のように、自分で任意のJavaScriptを書いてカスタムスクリプトレットとして登録する機能には違いがある。

今回のように既存のカスタムフィルターだけでは解決できなかった場合、Braveではさらに自由なJavaScriptを書いて長押し禁止処理だけを書き換える方法を取りにくい。

 

今回の検証では長押し禁止だけの解除には至らなかった

今回試した範囲では contextmenu、selectstart、タッチ系イベント、user-select、-webkit-touch-callout などを対象にしても長押し禁止だけを解除することはできなかった。

フィルターが効かなかったからといって、それぞれの構文そのものが無効とは限らない。対象サイトが別の仕組みで長押しを制御している可能性もある。

ただBraveでは、デスクトップ版のカスタムスクリプトレットのように任意のJavaScriptを登録してページの動作を書き換える方法には制約がある。

結果として自分が検証した環境では、サイトのほかのJavaScriptをそのまま動かしながら、長押し禁止だけをピンポイントで解除するところまでは実現できなかった。

 

スマホ版Braveでは今後実装されるのか

自分がやろうとしていたのは、JavaScript全体を無効にするのではなく、独自のJavaScriptを特定サイトへ挿入して長押し禁止の処理だけを書き換える方法だ。

この用途に使えるBraveの「カスタムスクリプトレット」は、デスクトップ版ではBrave 1.75から実装されている。一方でAndroidやiOSを含むモバイル版ではまだ実装されていない。

BraveのGitHubではモバイル版へのカスタムスクリプトレット実装がfeature requestとして登録され、現在もOpenになっている。さらにPlanned workとして扱われているため、単に要望が出ているだけではなく実装予定の作業として認識されているようだ。

ただし現時点では実装時期までは決まっていない。将来的にスマホ版でもカスタムスクリプトレットが利用できるようになれば、今回やろうとしていた長押し禁止だけを書き換える方法も試しやすくなりそう。


ポストシェア送る
B!
ブックマーク

この記事にコメントする



メールアドレスは公開されません。サイト運営者からの連絡に使用されることがあります。


表示されているひらがなを入力してください
認証コード

最近の記事一覧