Greasemonkey: Adicionar API GM_notification

Criado em 20 set. 2010  ·  26Comentários  ·  Fonte: greasemonkey/greasemonkey

Como um autor de script de usuário, eu adoraria poder enviar notificações clicáveis ​​para meus usuários em vez de alertas em janelas de confirmação em muitas situações.

Comentários muito úteis

PARA SUA INFORMAÇÃO...
RESOLVIDO FIXO
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

Todos 26 comentários

usando o patch de # 1193 isso é moleza, a parte clicável é um pouco mais de trabalho extra.

nota: @icon de # 1096 pode ser usado para o ícone da notificação.

Seria bom tê-lo fora do DOM sem privilégios às vezes ... mas o consenso sobre que tipo de notificação pode ser um problema.

A frase "enviar notificações" é extremamente vaga.

Supondo que você pretenda que isso signifique "fornecer uma interface para nsIAlertsService ", eu teria que pensar um pouco antes de formar uma opinião clara. Em geral, eu realmente não gosto das notificações do sistema que (presumo) isso fornece. Eles parecem ser extremamente breves e difíceis de interagir. Quase todas as vezes (por exemplo) que o Firefox ou Thunderbird me informa que há uma atualização ou uma nova mensagem, o brinde desapareceu quase antes que eu tivesse tempo de parar o que estou fazendo, ler a caixa e descobrir o que diz.

Acho que minha reação instintiva seria que este deveria ser um @require que o coloca no DOM dessa página, caso contrário, como o usuário deve saber de qual página a mensagem está vindo (especialmente quando pode haver várias guias apropriadas abertas) ?

Supondo que você pretenda que isso signifique "fornecer uma interface para nsIAlertsService"

Sim, usaria o que implementei em # 1193

a torrada desapareceu quase antes que eu tivesse tempo de parar o que estou fazendo, ler a caixa e descobrir o que diz.

Bem, eu os amo e acho que é melhor para um autor de script de usuário decidir se é útil para seu script ou não. Além do mais eu acho que o tempo que eles aparecem é uma configuração personalizável, pelo menos com osx eu sei que é.

Acho que minha reação instintiva seria que este deveria ser um @require que o coloca no DOM dessa página,

como isso seria feito ..?

como o usuário deve saber de qual página a mensagem está vindo (especialmente quando pode haver várias guias apropriadas abertas)?

o título pode ser o nome do script do usuário e o ícone pode ser seu @icon.

Eles parecem ser extremamente breves e difíceis de interagir. Quase todas as vezes (por exemplo) que o Firefox ou Thunderbird me informa que há uma atualização ou uma nova mensagem, o brinde desapareceu quase antes que eu tivesse tempo de parar o que estou fazendo, ler a caixa e descobrir o que diz.

Alert.totalOpenTime é a configuração que você deseja alterar, o valor padrão é 4segs, eu geralmente gosto de 30segs.

Você gostaria de adicionar suporte a imagens personalizadas?

function GM_notification (aMsg, aTitle, aImg) {
 var title = aTitle? "" + aTitle: "Greasemonkey";
 var message = aMsg? "" + aMsg: "";
 var image = aImg? "" + aImg: "chrome: //greasemonkey/skin/icon_medium.png";
 experimentar {
 AlertServ.showAlertNotification (
 imagem,
 título, mensagem, falso, "", nulo);
 // Parece melhor no Ubuntu do que no Windows (http://i55.tinypic.com/2jfwtg9.png)
 } catch (e) {
 // No caso, por exemplo, do Growl não estar instalado em um Mac.
 alerta (título + "\ n" + mensagem);
 }
 };

Enganado por # 1271

votar não consertará isso

votação wontfix para isto

Por quê?

Arantius escreveu :
A questão é que o recurso que ele substituiu dependia da barra de status, que está desaparecendo no Firefox 4. Atualmente, não é mais do que isso.

Esse recurso seria útil para scripts que redirecionam o DOM várias vezes e, eventualmente, chegam a uma imagem em vez de um htm / le ainda permitem notificações ao usuário final de que um determinado detalhe ocorreu. Como todos sabemos, user.js só funciona em arquivos .htm / l, não em imagens.

Votando +1 para expor a função API para sandbox , pois é muito simples de fazer com benefícios adicionais.

EDITAR: Para atender à solicitação do GM-Script-Writer-62850, o valor em @icon poderia ser facilmente usado em conjunto com isso.

O Firefox 22 tem suporte para notificações na web: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

+1

O Firefox 22 tem suporte para notificações na web: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

Mas acho que há um grande erro (https://bugzilla.mozilla.org/show_bug.cgi?id=875114, respectivamente https://bugzilla.mozilla.org/show_bug.cgi?id=862395). Então posso fechar: https://github.com/greasemonkey/greasemonkey/issues/1742

Em alguns casos de uso, podemos usar notificações da web, que podem ser adicionadas ao Firefox usando vários complementos, como o notificador de guias .

Em alguns casos de uso, podemos usar notificações da web, que podem ser adicionadas ao Firefox usando vários complementos, como o notificador de guias.

Mas, ao usar a API de notificação da web, o script só pode exibir notificações pop-up se o usuário permitir que o site o faça. O usuário não tem escolha para desabilitar notificações do site, mas habilitá-las a partir do script.

Certo, eu perdi totalmente esse aspecto. : +1:
Uma solução alternativa poderia ser usar uma senha secreta e configurar o notificador de guia para mostrar apenas as notificações que a incluem. Dependendo da maldade do site, um único caractere Unicode estranho pode ser suficiente, pode até ser invisível.

Novamente, essa API é necessária, já que o site começa a mostrar notificações de que o usuário deseja bloqueá-las. Mas também preciso mostrar notificações. Como resultado, o usuário não tem escolha entre desativar todas essas notificações ou ativar todas elas. Eu preciso dessa API para que o usuário só permita notificações do userscript.

O ramo de teste:
https://github.com/janekptacijarabaci/greasemonkey/tree/_testBranch_GM_notification

Sincronizar API com Tampermonkey
Veja também https://tampermonkey.net/documentation.php#GM_notification

Isso é apenas uma coisa para teste!

Usa a função " PopupNotifications " (! = "Web (HTML5) Notification API")!
(Eu não preciso deste recurso - por enquanto vou esperar para resolver este problema: bug 862395 )

@janekptacijarabaci Obrigado, mas achei que é bugado ...

  1. PopupNotifications.jsm não é uma notificação de área de trabalho: a notificação não será exibida se a janela do navegador estiver minimizada. (Sim, isso é muito importante, caso contrário, se tornará muito mais inútil)
  2. onclick e ondone devem ser opcionais, mas atualmente irão falhar sem esses valores

(Não tenho certeza de quando o bug 862395 será corrigido. Mas acho que é melhor ter um bugado, mas utilizável do que nada.)

Branch de teste atualizado:
Notificações pop-up => Notificação da área de trabalho

@janekptacijarabaci
Obrigada.

No meu entendimento, atualmente a implementação no branch de teste só permite a notificação quando o usuário concede permissão ao site para fazê-lo. É como chamar Notification diretamente. O usuário ainda não tem escolha para desabilitar a notificação do site, mas permiti-la para o userscript.

Não tenho certeza do que você considera que esta API deveria ser. Mas espero que este possa funcionar com diferentes controles de permissão para scripts de conteúdo do site. (E isso é o que a TM faz atualmente. Eles sempre permitem notificações de exibição de script de usuário)

@tiansh

A questão é como fazer ...

A notificação da área de trabalho no Chrome (Tampermonkey) é diferente:
https://developer.chrome.com/extensions/desktop_notifications

O principal do sistema (com privilégios de cromo) deve receber permissão. Mas...
Usando a passagem de mensagens (especialmente sob e10s on) - mata todos os eventos (onclick, ondone).
Esta função pode ser usada da seguinte forma:
https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/sandbox.js#L75
(https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/menucommand.js#L90)
mas deixo isso para a comunidade / arantius (não tenho certeza sobre a melhor maneira de fazer isso).
(Não sei se alguém quer fazer isso: # 2275 - http://arewebextensionsyet.com/#notifications)

Não tenho uma ideia melhor agora ...

No entanto, tenho feito algumas tentativas ...

Editado:
Mas ... Executar GM_notification () duas vezes (e mais) seguidas não funciona para mim.

Veja também bug 1263155 ( 1294332 , 1306822 ) ...

PARA SUA INFORMAÇÃO...
RESOLVIDO FIXO
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

Então ... Foi implementado ou não?

@VBelozyorov , não acho que foi implementado para 3.x. Mas para 4.x # 2590

Esta página foi útil?
0 / 5 - 0 avaliações