Greasemonkey: Ajouter l'API GM_notification

Créé le 20 sept. 2010  ·  26Commentaires  ·  Source: greasemonkey/greasemonkey

En tant qu'auteur de script utilisateur, j'aimerais pouvoir envoyer des notifications cliquables à mes utilisateurs au lieu d'alerter sur les fenêtres de confirmation dans de nombreuses situations.

Commentaire le plus utile

POUR VOTRE INFORMATION...
RÉSOLU FIXE
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

Tous les 26 commentaires

en utilisant le patch de #1193 c'est un morceau de gâteau, la partie cliquable est un peu de travail supplémentaire cependant.

note : @icon de #1096 pourrait être utilisé pour l'icône de la notification.

Ce serait bien de l'avoir en dehors du DOM non privilégié parfois... mais un consensus sur le type de notification peut être un problème.

L'expression "envoyer des notifications" est extrêmement vague.

En supposant que vous entendiez par là "fournir une interface à

Je pense que ma réaction instinctive serait que cela devrait être un @require qui le met dans le DOM de _that_ page, sinon comment l'utilisateur est-il censé savoir de quelle page vient le message (surtout quand il pourrait y avoir plusieurs onglets appropriés ouverts) ?

En supposant que vous vouliez que cela signifie "fournir une interface à nsIAlertsService"

Oui, cela utiliserait ce que j'ai implémenté dans #1193

le toast a disparu presque avant que j'aie eu le temps d'arrêter ce que je fais, de lire la boîte et de comprendre ce qu'elle dit.

Eh bien, je les aime, et je pense qu'il est préférable pour un auteur de script utilisateur de décider si cela est utile ou non pour son script. En plus, je pense que la durée d'affichage est un paramètre personnalisable, du moins avec osx, je le sais.

Je pense que ma réaction instinctive serait que cela devrait être un @require qui le met dans le DOM de cette page,

comment cela se ferait..?

comment l'utilisateur est-il censé savoir de quelle page provient le message (surtout lorsqu'il peut y avoir plusieurs onglets appropriés ouverts) ?

le titre peut être le nom du script utilisateur et l'icône peut être @icon.

Ils semblent être extrêmement brefs et difficiles à interagir. Presque chaque fois (par exemple) que Firefox ou Thunderbird me dit qu'il y a une mise à jour ou un nouveau message, le toast a disparu presque avant que j'aie eu le temps d'arrêter ce que je fais, de lire la boîte et de comprendre ce qu'elle dit.

alerts.totalOpenTime est le paramètre que vous souhaitez modifier, la valeur par défaut est de 4 secondes, j'aime généralement 30 secondes.

Seriez-vous prêt à ajouter une prise en charge d'images personnalisées ?

function GM_notification(aMsg, aTitle, aImg) {
 var titre = aTitre ? "" + aTitre : "Greasemonkey" ;
 var message = aMsg ? "" + aMsg : "";
 var image = aImg ? "" + aImg : "chrome://greasemonkey/skin/icon_medium.png" ;
 essayer {
 alertsServ.showAlertNotification(
 image,
 titre, message, faux, "", null);
 // Cela semble mieux sur Ubuntu que Windows ( http://i55.tinypic.com/2jfwtg9.png )
 } capture (e) {
 // Au cas où, par exemple, Growl n'est pas installé sur un Mac.
 alert(titre + "\n" + message);
 }
 } ;

Dupé par #1271

voter ne réglera pas ce problème

voter ne résoudra pas pour cela

Pourquoi?

arantius a écrit :
Le fait est que la fonctionnalité qu'elle a remplacée dépendait de la barre d'état, qui disparaît dans Firefox 4. Elle n'est, pour le moment, pas plus que cela.

Cette fonctionnalité serait utile pour les scripts qui redirigent le DOM plusieurs fois et atterrissent finalement sur une image au lieu d'un htm/l et autorisent toujours les notifications à l'utilisateur final qu'un certain détail s'est produit. Comme nous le savons tous, user.js ne fonctionne que sur les fichiers .htm/l et non sur les images.

Voter +1 pour exposer la fonction API au sandbox car c'est très simple à faire avec des avantages supplémentaires.

EDIT : pour répondre à la demande de GM-Script-Writer-62850, la valeur de @icon pourrait facilement être utilisée en conjonction avec cela.

Firefox 22 prend en charge les notifications Web : https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

+1

Firefox 22 prend en charge les notifications Web : https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/22

Mais je pense qu'il y a une erreur majeure (https://bugzilla.mozilla.org/show_bug.cgi?id=875114, respectivement https://bugzilla.mozilla.org/show_bug.cgi?id=862395). Ensuite, je peux fermer : https://github.com/greasemonkey/greasemonkey/issues/1742

Dans certains cas d'utilisation, nous pouvons utiliser des notifications Web à la place, qui peuvent être ajoutées à Firefox à l'aide de divers modules complémentaires tels que tab notifier .

Dans certains cas d'utilisation, nous pourrions utiliser des notifications Web à la place, qui peuvent être ajoutées à Firefox à l'aide de divers modules complémentaires comme le notificateur d'onglet.

Mais en utilisant l'API de notification Web, le script ne peut afficher des notifications que si l'utilisateur autorise le site à le faire. L'utilisateur n'a pas le choix de désactiver les notifications du site Web mais de les activer à partir du script.

C'est vrai, j'ai totalement raté cet aspect. :+1:
Une solution de contournement pourrait consister à utiliser un mot de passe secret et à configurer le notificateur d'onglet pour afficher uniquement les notifications qui l'incluent. Selon la perversité du site, un seul caractère Unicode étrange peut suffire, voire être invisible.

Encore une fois, cette API est nécessaire car le site Web commence à afficher des notifications sur l'utilisateur qui souhaite les bloquer. Mais je dois aussi afficher les notifications. En conséquence, l'utilisateur n'a pas le choix entre désactiver toutes ces notifications ou les activer toutes. J'ai besoin de cette API pour que l'utilisateur n'autorise que les notifications du script utilisateur.

La branche test :
https://github.com/janekptacijarabaci/greasemonkey/tree/_testBranch_GM_notification

Synchroniser l'API avec Tampermonkey
Voir aussi https://tampermonkey.net/documentation.php#GM_notification

C'est juste pour tester !

Utilise la fonction " PopupNotifications " (!= " API de notification Web (HTML5)") !
(Je n'ai pas besoin de cette fonctionnalité - pour l'instant j'attendrai de résoudre ce problème : bug 862395 )

@janekptacijarabaci Merci, mais j'ai trouvé que c'était buggé...

  1. PopupNotifications.jsm n'est pas une notification de bureau : la notification ne s'affichera pas si la fenêtre du navigateur est réduite. (Oui, c'est très important sinon ça devient beaucoup plus inutile)
  2. onclick et ondone devraient être facultatifs, mais actuellement, il échouera sans ces valeurs

(Je ne sais pas quand le bug 862395 sera corrigé. Mais je pense qu'il vaut mieux avoir un buggy mais utilisable que rien.)

Branche de test mise à jour :
Notifications contextuelles => Notification sur le bureau

@janekptacijarabaci
Merci.

À ma connaissance, actuellement la mise en œuvre dans la branche de test n'autorise la notification que lorsque l'utilisateur autorise le site à le faire. C'est comme appeler directement Notification . L'utilisateur n'a toujours pas le choix de désactiver la notification du site mais de l'autoriser à userscript.

Je ne suis pas sûr de ce que vous considérez que cette API devrait être. Mais j'espère que celui-ci pourra fonctionner avec un contrôle d'autorisation différent des scripts de contenu du site Web. (Et c'est actuellement le cas pour TM. Ils autorisent toujours les notifications d'affichage de script utilisateur)

@tiansh

La question est de savoir comment faire...

La notification de bureau dans Chrome (Tampermonkey) est différente :
https://developer.chrome.com/extensions/desktop_notifications

Le principal du système (privilégié par Chrome) doit recevoir l'autorisation. Mais...
Utilisation de la transmission de messages (en particulier sous e10s sur) - tue tous les événements (onclick, ondone).
Cette fonction peut être utilisée comme suit :
https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/sandbox.js#L75
(https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/menucommand.js#L90)
mais je laisse le soin à la communauté/arantius (je ne suis pas sûr de la meilleure façon de le faire).
(Je ne sais pas si quelqu'un veut faire ça : #2275 - http://arewewebextensionsyet.com/#notifications)

Je n'ai pas de meilleure idée maintenant...

Cependant j'ai fait quelques tentatives...

Édité:
Mais... Exécuter GM_notification() deux fois (et plus) de suite ne fonctionne pas pour moi.

Voir aussi bug 1263155 ( 1294332 , 1306822 )...

POUR VOTRE INFORMATION...
RÉSOLU FIXE
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

Alors... A-t-il été mis en œuvre ou non ?

@VBelozyorov , je ne pense pas qu'il ait été implémenté pour 3.x. Mais pour 4.x #2590

Cette page vous a été utile?
0 / 5 - 0 notes