Greasemonkey: Пересмотреть реализацию GM_registerMenuCommand в GM 4.x

Созданный на 20 нояб. 2017  ·  5Комментарии  ·  Источник: greasemonkey/greasemonkey

Как я видел (см. Комментарий) GM_registerMenuCommand заменяется контекстным меню HTML5. и нет никаких планов добавлять его в GM 4.x.

Тем не менее, я начал этот отдельный выпуск. в надежде, что вы передумаете.


Я понимаю, что добавление некоторых параметров контекстного меню в собственное контекстное меню,
полезен для тех, кто хочет добавить в него больше записей.
Например, этот новый тестовый сценарий от arantius search-with-google .
скриншоты:
2017-11-20_1719082017-11-20_172014


Но для пользовательских скриптов, которые используют GM_registerMenuCommand только для настроек, то есть вы настраиваете только время от времени.
и применить ко всем страницам,
такие как популярные:
Средство просмотра всплывающих изображений при наведении мыши , ( скриншот настроек )
Название ссылки YouTube ( снимок экрана настроек ) и
Linkify Plus Plus ( скриншот настроек )

Представьте, что вы установили эти сценарии, которые создают в общей сложности 3 записи в верхней части контекстного меню.
которые не нужны большую часть времени:
это сделало бы использование контекстного меню на странице загроможденным и непрактичным.

А затем автор скрипта, чтобы не загромождать контекстное меню просто ради предложения настроек,
он либо регистрировал сочетание клавиш на каждой странице (без пользовательского интерфейса?)
или создайте новый специальный элемент кнопки на каждой странице.


Итак, я хотел бы попросить вас пересмотреть реализацию GM_registerMenuCommand внутри всплывающего окна кнопки панели инструментов, как это было в GM 3.x, а также в других наиболее часто используемых менеджерах скриптов, Tampermonkey и Violentmonkey.
,
Он появится между / под записью «Greasemonkey активен / отключен»,
и над списком «Пользовательские сценарии для этой вкладки» (GM 4.1 beta4).

Самый полезный комментарий

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

Для справки я цитирую соответствующее обсуждение из https://github.com/greasemonkey/greasemonkey/issues/2559 :


(восемь04)

_arantius Я видел, что GM_registerMenuCommand заменяется контекстным меню HTML5. Планируется ли добавить его в GM 4.x? Я не могу найти проблему с отслеживанием. _

(арантий)

_Нет. Политика Greasemonkey заключалась (долгое время) в том, чтобы не реализовывать функции "пользовательского пространства". Любой скрипт может это сделать, или @require что-то вроде этого полифилла, который это делает. Greasemonkey не нужно создавать или поддерживать эту функцию, чтобы скрипты могли ее использовать. Дело здесь в том, чтобы делать то, что делает полифилл: упростить обновление скриптов, чтобы они были совместимы как со старыми, так и с новыми версиями Greasemonkey._

(восемь04)

_ Я имел в виду, что GM4 также предоставит API для выполнения команд сценария из пользовательского интерфейса диспетчера пользовательских скриптов, такого как старый GM_registerMenuCommand, не спрашивая, будет ли в GM API контекстного меню HTML5. GM_registerMenuCommand часто используется для запуска диалогового окна конфигурации скрипта, которое не должно быть полифицируемым как контекстное меню HTML5 IMHO._

_BTW, всего несколько месяцев назад я создал библиотеку для работы с контекстным меню HTML, которая будет повторно использовать свойство contextmenu на странице, если оно уже установлено: _
_ https://github.com/eight04/GM_context_

(арантий)

_GM_registerMenuCommand часто используется для запуска диалогового окна конфигурации скрипта, которое не должно быть полифицируемым как контекстное меню HTML5 IMHO_

_Почему нет?_

(восемь04)

_Почему нет?_

_1. Команда в контекстном меню должна быть: _

_- Действие, которое работает с указанным контекстом (элементом). Например, когда выделен какой-то текст, отображается команда «Копировать», которая является действием для работы с выделенным фрагментом.
_- Ярлык для выполнения указанной команды для удобства.
_Команда «Мои настройки пользовательского скрипта» не попадает в обе категории. Это не зависит от контекста, также нет необходимости использовать ярлык для настройки_.

_2, это ненадежно. Может быть заблокирован / заменен скриптами страницы.

(трлклы)

_Я согласен с трудностями концептуального уровня. У меня больше нет расширений, использующих контекстное меню для настроек. Если бы они это сделали, это было бы довольно быстро загружено, так как я использую много расширений.

_Но основная причина, по которой я вижу, заключается в том, что Chrome удалил контекстное меню HTML5 из ​​спецификации , что означает, что оно, вероятно, будет удалено и из Firefox. Я даже не знал, что он существует, поскольку я не видел, чтобы какой-либо сайт его использовал. Приложения просто вращаются сами по себе, блокируя настоящее контекстное меню (что в большинстве случаев очень раздражает. Это лишает функциональности) _

Это вызывает у меня головную боль, пытаясь понять, как будут взаимодействовать скрипты. Предполагая, что был пункт меню, и указанный пункт меню открывал какое-то окно / окно / диалог / что угодно для изменения настроек, считается ли это вновь созданное окно находящимся в контексте «сценария содержимого» и, следовательно, способным отправлять сообщения в расширение? А если нет, то как отправить сообщение обратно в сценарий содержимого, чтобы можно было изменить настройки?


Хотя, похоже, общая тема - это меню настроек. Я был бы за то, чтобы в метаблоке были статически определенные поля конфигурации, которые затем генерируются и могут быть сохранены / изменены через меню Monkey. Аналогично resource но изменяются путем перехода к Monkey Menu -> Script -> Config -> Items .

_Я был бы за то, чтобы в метаблоке были статически определенные поля конфигурации, которые затем генерируются и могут быть сохранены / изменены через меню Monkey. Подобно ресурсу, но изменяются путем перехода в Monkey Menu -> Script -> Config -> Items.

Боюсь, что использование статических полей конфигурации в метаблоке сделает его слишком ограничивающим:
например, для первого упомянутого скрипта Mouseover Popup Image Viewer ,
помимо текущего практического макета (раскрывающиеся меню, флажки, текстовые поля с полосой прокрутки, текстовое поле),
в настоящее время меню настроек предлагает:

  • импортировать / экспортировать настройки (в буфер обмена),
  • установить правила из репозитория MPIV прямо в настройках,
  • есть правила поиска по типу, когда установлено много настраиваемых правил хоста,
  • он проверяет , является ли введенное настраиваемое правило хоста допустимым JSON, и выделяет строку ввода красным, если нет,

Кроме того, его автору придется переписать весь установочный код.

settings screenshot

@legnaleurc Гоша, для некоторых это может быть проблемой. Как полный неспециалист, я понятия не имею, но знаете ли вы об альтернативном способе добавления пунктов контекстного меню, чтобы заменить метод, который использует

? Есть ли какой-нибудь простой метод, о котором я не знаю, который можно использовать из пользовательского скрипта?
Была ли эта страница полезной?
0 / 5 - 0 рейтинги