Movable Typeの独自コンテキストメニューを無効化する
Movable Typeに組み込まれているエディタ (TinyMCE) には、OS標準のコンテキストメニューをオーバーライドする機能が存在する。
Movable Typeはこの独自コンテキストメニューを有効にした上で「リンク」しか項目を用意していない。死ぬほど不便なので無効化する。
Symptom
- Movable Type を利用している
- TinyMCE 5 or TinyMCE 6 を利用している
- エディタによるコンテキストメニューのオーバーライドを無効化したい
Resolution
https://stackoverflow.com/questions/9509082/remove-the-context-menu-in-tinymce を参考にした。
Anton Kostiuchkov 氏がコメントしているとおり、 TinyMCE 5以降はコンテキストメニュー機能がコアに組み込まれているので、TinyMCE読み込み時のオプションで無効化しなければいけない。
TinyMCE 6 の場合
TinyMCE 6 であれば、mt/mt-static/plugins/TinyMCE6/lib/js/adapter.js
を開き、config
ブロックへ以下のように contextmenu: false,
を追加する。
--- adapter.js.default 2022-12-28 22:10:47.519239000 +0900 +++ adapter.js 2022-12-28 22:09:51.045395000 +0900 @@ -23,4 +23,5 @@ }, config: { + contextmenu: false, plugins: 'lists,media,link,fullscreen,table,quickbars', external_plugins: {
ブラウザで投稿画面を開き、Ctrl+Shift+R でスーパーリロードしてから動作を確認する。
TinyMCE 5 の場合
mt/mt-static/plugins/TinyMCE5/lib/js/adapter.js
を開き、同様に config
ブロックへ contextmenu: false,
を追加すればいい。
--- adapter.js.default 2022-12-28 23:10:49.319609000 +0900 +++ adapter.js 2022-12-28 23:11:03.105742000 +0900 @@ -36,4 +36,5 @@ }, config: { + contextmenu: false, plugins: 'lists,media,paste,hr,link,textpattern,fullscreen,table,quickbars', external_plugins: {
ブラウザで投稿画面を開き、Ctrl+Shift+R でスーパーリロードしてから動作を確認する。
Appendix
Six Apart はこの仕様について「ブラウザのメニューを表示する場合は、極力 Ctrl キー + 右クリックをご利用ください」とコメントしていた。
誰が見ても単に不便でしかないのだが、実用的なメニューを作るまで機能を有効にしないという判断も、ひとまずメニューにカット・コピー・ペーストなどを追加するという判断もできなかったようだ。どうも盲目さを感じる話ではないか。