はりをきば

そこにピカマンがいる限り 私はテイッハットウッをやめない

Firefoxは強制的に右クリックメニューを表示できる

¯注意
この記事はを最後に更新されていない。
更新日が1年以上前の記事はリンク切れしていたり、情報としては役に立たなくなっている可能性あり。
ˆMixed Contentについて
この記事は投稿日が古い為、記事中の画像は非SSL(http://)で貼られている。(※投稿画像以外は全てSSL)
この件に関して詳しくはこちらを参照。

【追記 2016/12/24】

  • カスタム右クリックメニューの挙動に関する情報更新
  • WHATWGのリンク切れ修正
  • テスト画像差し替え


今年最後だってのによりにもよってこのタイミングでこんなしょうもない記事…
…それがはりをきばクオリティ。
(ちなみに去年の大晦日に投稿した記事はこちら


前置き考えるのも面倒なので本題。
知らない人があまりにも多過ぎるので記事にする。




Firefoxは、Shiftキーを押しながら右クリックすると強制的にコンテキストメニューを表示できる。


以下の画像で試してみるとわかる。

普通は右クリックが禁止されていて何も起きないが、
Firefoxに限り、Shiftを押しながら右クリックすると普通にメニューを呼び出せる。


これはFirefoxの独自機能ではなく、HTML5の仕様策定などをしているWHATWGによって定められている標準仕様だったりする。

User agents may provide means for bypassing the context menu processing model, ensuring that the user can always access the UA's default context menus. For example, the user agent could handle right-clicks that have the Shift key depressed in such a way that it does not fire the contextmenu event and instead always shows the default context menu.


(意訳)
ブラウザは、コンテキストメニューのサイト側の処理を無視し
常にデフォのUI(メニュー)を表示する手段を提供すべき。
手段とは、例えばShiftキーを押しながら右クリックした場合など。

https://html.spec.whatwg.org/multipage/forms.html#context-menu-processing-model


現在この仕様に従っているのはFirefoxだけで、他のブラウザにはそういった機能はない。


上にも訳した通り、この機能は右クリック禁止を解除するのではなく
右クリック関係の処理を全てパスする機能なので
右クリックメニューに独自の項目を追加してる当ブログ上で
Shift+右クリすると、独自項目が表示されなくなるという欠点(?)もある。


また、Firefoxは設定から右クリック関係のスクリプトを完全無効化できる
(それだと一部の独自メニューを出すサイトが機能しなくなるので推奨しないが)




右クリック禁止はブックマークレットやユーザースクリプトである程度は解除できるが、
例えばcontextmenuイベントを無名関数経由でpreventDefaultされた場合など、解除が困難なケースもあり完全とは言えない。


それに対し、Firefoxに備わるこれらの一連の機能にはサイト側からはどうやっても抗えない。
無条件に禁止解除できる。
Firefoxユーザー相手に完璧な右クリック禁止を実装することは不可能。
(Shift押下中は無条件でcontextmenuイベントが無効になるので)


Firefoxには読み込まれてる画像の一覧表示&保存機能もあるし、
右クリック禁止だとか小賢しいことをするアホは快く死ぬべき。




最近、改悪のバーゲンセールが続くFirefoxだが
腐ってもこういった辺はまだFirefoxなので、しばらくは世話になり続けると思う。


それでは良いお年を。