Greasemonkey: Reconsidere a implementação do GM_registerMenuCommand no GM 4.x

Criado em 20 nov. 2017  ·  5Comentários  ·  Fonte: greasemonkey/greasemonkey

Como eu vi (veja o comentário) GM_registerMenuCommand é substituído pelo menu de contexto HTML5. e não há planos de adicioná-lo ao GM 4.x.

No entanto, comecei esta edição separada. na esperança de que você possa reconsiderar.


Eu entendo que adicionar algumas opções de menu de contexto ao menu de contexto nativo,
é útil para aqueles que desejam adicionar mais entradas nele.
Tal como este novo script de teste de arantius search-with-google .
capturas de tela:
2017-11-20_1719082017-11-20_172014


Mas, para scripts de usuário que usam GM_registerMenuCommand apenas para configurações, ou seja, você só configura então apenas de vez em quando.
e se aplicam a todas as páginas,
como o popular:
Visualizador de imagens pop-up do mouseover , ( captura de tela das configurações )
Título do link do YouTube ( captura de tela das configurações ) e
Linkify Plus Plus ( captura de tela das configurações )

Imagine ter instalado esses scripts que criam um total de 3 entradas no topo do menu de contexto
que não são necessários na maioria das vezes:
tornaria o uso do menu de contexto na página desordenado e pouco prático.

E então o autor do script, para evitar bagunçar o menu de contexto apenas para oferecer configurações,
ele registraria um atalho de teclado em cada página (sem IU?)
ou crie um novo elemento de botão dedicado em cada página.


Portanto, gostaria de pedir a você que reconsidere a implementação de GM_registerMenuCommand dentro do pop-up do botão da barra de ferramentas, semelhante a como era no GM 3.x, bem como nos outros gerenciadores de scripts mais usados ​​disponíveis, Tampermonkey e Violentmonkey.
,
Apareceria entre / abaixo da entrada "Greasemonkey está ativo / desabilitado",
e acima da lista 'Scripts de usuário para esta guia' (GM 4.1 beta4).

Comentários muito úteis

Todos 5 comentários

Para referência, cito a discussão relevante de https://github.com/greasemonkey/greasemonkey/issues/2559 :


(oito04)

_arantius Eu vi que GM_registerMenuCommand foi substituído pelo menu de contexto HTML5. Existe algum plano para adicioná-lo ao GM 4.x? Não consigo encontrar o problema de rastreamento._

(arantius)

_Não. A política do Greasemonkey tem sido (por muito tempo) não implementar recursos de "espaço do usuário". Qualquer script pode fazer isso, ou @require algo como este polyfill que faz isso. O Greasemonkey não precisa construir nem suportar esse recurso para habilitar scripts para usá-lo. O objetivo aqui é apenas fazer o que o polyfill faz: tornar mais fácil atualizar os scripts para serem compatíveis com as versões antigas e novas do Greasemonkey._

(oito04)

_Eu quis dizer se o GM4 também fornecerá uma API para executar comandos de script da IU do gerenciador de userscript como o antigo GM_registerMenuCommand, sem perguntar se haverá uma API de menu de contexto HTML5 no GM. GM_registerMenuCommand é frequentemente usado para iniciar a caixa de diálogo de configuração do script, que não deve ser preenchida como um menu de contexto HTML5 IMHO._

_BTW, criei uma biblioteca para trabalhar com o menu contextual HTML há apenas alguns meses, que reutilizaria a propriedade contextmenu na página se ela já estiver definida: _
_ https://github.com/eight04/GM_context_

(arantius)

_GM_registerMenuCommand é frequentemente usado para iniciar a caixa de diálogo de configuração do script, que não deve ser polyfilled como um menu de contexto HTML5 IMHO_

_Por que não?_

(oito04)

_Por que não?_

_1. O comando no menu de contexto deve ser: _

_- Uma ação que funciona em um contexto (elemento) especificado. Por exemplo, quando algum texto é selecionado, o comando "Copiar", que é uma ação para trabalhar com a seleção, é mostrado._
_- Um atalho para executar o comando especificado por conveniência._
_Um comando "My userscript setting" não se enquadra em ambas as categorias. Não depende do contexto, também não há necessidade de usar um atalho para configuração._

_2, Não é confiável. Ele pode ser bloqueado / substituído por scripts de página._

(trlkly)

_Concordo com as dificuldades de nível conceitual. Não tenho mais extensões que usam o menu de contexto para configurações. Ficaria muito ocupado rapidamente se o fizessem, visto que executo muitas extensões._

_Mas o principal motivo que vejo é que o Chrome removeu o menu de contexto HTML5 das especificações , o que significa que provavelmente será removido do Firefox também. Eu nem sabia que ele existia, visto que nunca vi nenhum site usá-lo. Os aplicativos simplesmente giram por conta própria, bloqueando o menu de contexto real (o que é um grande, enorme aborrecimento na maioria dos casos. Isso remove a funcionalidade.) _

Isso me dá dor de cabeça ao tentar pensar em como os scripts interagiriam. Assumindo que havia uma opção de menu e essa opção de menu abriu algum tipo de janela / caixa / diálogo / qualquer coisa para alterar as configurações, essa janela recém-gerada é considerada no contexto do 'script de conteúdo' e, portanto, capaz de enviar mensagens para a extensão? E se não for, como enviar uma mensagem de volta ao script de conteúdo, para que as configurações possam ser alteradas?


Porém, parece que um tema comum são os menus de configurações. Eu seria a favor de ter campos de configuração definidos de forma estática no metablock que são gerados e podem ser salvos / modificados por meio do menu Monkey. Semelhante a resource mas são alterados indo Monkey Menu -> Script -> Config -> Items .

_Eu seria a favor de ter campos de configuração definidos de forma estática no metablock que são gerados e podem ser salvos / modificados através do menu Monkey. Semelhante a um recurso, mas é alterado em Menu do Macaco -> Script -> Configuração -> Itens._

Receio que o uso de campos de configuração estáticos no metabloco o torne muito limitado:
por exemplo, para o primeiro script mencionado Visualizador de imagens de pop-up de mouseover ,
além do layout prático atual (menus suspensos, caixas de seleção, caixas de texto com barra de rolagem, área de texto),
o menu de configurações oferece atualmente:

  • importar / exportar as configurações (para a área de transferência),
  • instalar regras do repositório MPIV dentro das configurações,
  • há regras localizar conforme você digita quando há muitas regras de host personalizadas instaladas,
  • ele valida se a regra de host personalizada inserida é um JSON válido e destaca a linha de entrada em vermelho, caso não seja,

Além disso, seu autor deve ter que reescrever todo o 'código de configuração.

settings screenshot

@legnaleurc Puxa, isso pode ser um problema para algumas pessoas. Como um leigo total, não tenho ideia, mas por acaso você conhece uma maneira alternativa de adicionar itens de menu de contexto, para substituir o método que usa

? Existe algum método simples que eu não conheço que possa ser usado em um script de usuário?
Esta página foi útil?
0 / 5 - 0 avaliações