Greasemonkey: Пересмотрите GM.registerMenuCommand (полифил зависит от API, который уходит)

Созданный на 29 апр. 2020  ·  7Комментарии  ·  Источник: greasemonkey/greasemonkey

Поскольку никакой другой движок браузера не позаботился о его поддержке, в Firefox некоторое время была открытая ошибка для удаления возможности изменения контекстного меню, на которую полагается часть полифилла registerMenuCommand.

Похоже, что кто-то сейчас заинтересован в "исправлении" (т.е. удалении поддержки), поэтому, вероятно, было бы неплохо пересмотреть GM4, не предоставляя для этого собственную поддержку.

Я достаточно интенсивно использую его для таких вещей, как запуск моих пользовательских интерфейсов конфигурации, и, если не будет предоставлена ​​подходящая замена, мне просто придется отказаться от поддержки GreaseMonkey и проинструктировать пользователей, что по техническим причинам я могу поддерживать только ViolentMoney и TamperMonkey, потому что Я не считаю приемлемым UX загромождать сайт такими кнопками пользовательского интерфейса конфигурации «установи один раз и почти никогда не меняй».

Все 7 Комментарий

+1
Мне очень нравятся контекстные меню HTML 5, но если / когда они исчезнут, я тоже надеюсь, что GM.registerMenuCommand вернется. Я не вижу себя поддерживающим другое самодельное решение для многосайтовых пользовательских скриптов.

Любые предложения по UI / API, которые все еще будут существовать, которые вы хотели бы использовать?

Полагаю, нас заставят регистрировать вещи в обезьяньем меню?

Так поступают TamperMonkey и ViolentMonkey.

Я полагаю, что другим вариантом было бы изучить возможность аппроксимации того, что делает полифилл, используя browser.menus.create чтобы поместить все элементы меню, зарегистрированные в пользовательском скрипте, в подменю контекстного меню ... хотя это было бы под- оптимально без какого-либо способа привязать их к контексту, поскольку люди обычно ожидают, что контекстное меню будет контекстным.

(И, в идеале, все равно было бы хорошо иметь способ поместить записи «Настроить этот пользовательский скрипт» в меню обезьяны, а не в контекстное меню, подобно тому, как работает менеджер надстроек Firefox.)

Последний вариант действительно является «исследованием осуществимости». Я так давно не изучал API WebExtensions, что не могу вспомнить его ограничений в этом отношении. (Я пишу пользовательские скрипты, потому что они более переносимы и протестуют против обязательной подписи расширений.)

Вот более старая ветка:
https://github.com/greasemonkey/greasemonkey/issues/2714

@arantius

Полагаю, нас заставят регистрировать вещи в обезьяньем меню?

Даже если контекстное меню не было исключено из спецификации, его использование вместо GM_registerMenuCommand имеет следующие недостатки:

  • Он всегда вставляется в контекстное меню браузера, что мешает просмотру
  • Поскольку он вставляется в небезопасный контекст (DOM на стороне веб-страницы), это может вызвать проблемы с конфиденциальностью и безопасностью.
  • Недоступно, если контекстное меню заблокировано со стороны веб-страницы.

В ствол Firefox только что был добавлен патч, отключающий доступ к <menuitem> с целевым этапом выпуска Firefox 85.

https://bugzilla.mozilla.org/show_bug.cgi?id=1680596#c11

(В частности, он помещает его за преф dom.menuitem.enabled который по умолчанию имеет значение false.)

@arantius Реализация GM.registerMenuCommand () стала актуальной проблемой.

Этот API был реализован как в Violemntmonkey, так и в Tampermonkey, а также в Greasemonkey 3.x. Как уже упоминалось выше, он не подлежит замене каким-либо другим способом и важен для совместимости.

Я рассмотрел все предыдущие опасения по поводу реализации в обновлении https://github.com/greasemonkey/greasemonkey/pull/2770 . Почему это нельзя объединить?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги