Greasemonkey: 添加GM_notification API

创建于 2010-09-20  ·  26评论  ·  资料来源: greasemonkey/greasemonkey

作为用户脚本作者,我希望能够向我的用户发送可点击的通知,而不是在许多情况下在确认窗口上发出警报。

最有用的评论

供参考...
已解决 已解决
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

所有26条评论

使用#1193 中的补丁,这是小菜一碟,可点击部分需要一些额外的工作。

注意:#1096 中的@icon可用于通知图标。

有时将它放在非特权 DOM 之外会很好……但是对于什么样的通知可能是一个问题的共识。

“发送通知”这个词非常含糊。

假设您打算这意味着“为nsIAlertsService提供接口”,我必须考虑一段时间才能形成明确的意见。 一般来说,我真的不喜欢(我假设)这提供的吐司通知。 他们似乎非常简短,很难与之互动。 几乎每次(例如)Firefox 或Thunderbird 告诉我有更新或新消息时,几乎在我有时间停止正在做的事情、阅读框并弄清楚它说的是什么之前,吐司就消失了。

我认为我的直觉反应是这应该是一个@require ,将它放在_that_页面的DOM中,否则用户应该如何知道消息来自哪个页面(特别是当可能有多个合适的选项卡打开时) ?

假设您打算这意味着“为 nsIAlertsService 提供一个接口”

是的,这将使用我在 #1193 中实现的

几乎在我有时间停止我正在做的事情、阅读盒子并弄清楚上面写的是什么之前,吐司就消失了。

嗯,我喜欢它们,我认为最好由用户脚本作者决定它是否对他们的脚本有用。 此外,我认为它们出现的时间是一个可自定义的设置,至少我知道有 osx。

我想我的直觉反应是这应该是一个@require ,将它放在那个页面的DOM中,

那要怎么做..?

用户应该如何知道消息来自哪个页面(特别是当可能有多个合适的选项卡打开时)?

标题可以是用户脚本的名称,图标可以是@icon。

他们似乎非常简短,很难与之互动。 几乎每次(例如)Firefox 或Thunderbird 告诉我有更新或新消息时,几乎在我有时间停止正在做的事情、阅读框并弄清楚它说的是什么之前,吐司就消失了。

alerts.totalOpenTime是你要更改的设置,默认值是4secs,我一般喜欢30secs。

您愿意添加自定义图像支持吗?

功能 GM_notification(aMsg, aTitle, aImg) {
 var 标题 = 标题 ? "" + aTitle : "Greasemonkey";
 var 消息 = aMsg ? "" + aMsg : "";
 无功图像 = aImg ? "" + aImg : "chrome://greasemonkey/skin/icon_medium.png";
 尝试 {
 alertsServ.showAlertNotification(
 图片,
 标题,消息,假,“”,空);
 //这在 ubuntu 上看起来比 windows 好(http://i55.tinypic.com/2jfwtg9.png)
 }赶上(e){
 // 如果 Mac 上没有安装 Growl。
 警报(标题+“\n”+消息);
 }
 };

被#1271欺骗

投票不会解决这个问题

为此投票不会修复

为什么?

阿兰提乌斯写道
关键是它取代的功能取决于状态栏,而状态栏在 Firefox 4 中将消失。目前,仅此而已。

此功能对于多次重定向 DOM 并最终登陆图像而不是 htm/l 的脚本很有帮助,并且仍然允许向最终用户通知发生了某个细节。 众所周知,user.js 仅适用于 .htm/l 文件而不适用于图像。

投票+1以将 API 函数公开给sandbox因为这样做非常简单,而且具有额外的好处。

编辑:为了解决来自GM-Script-Writer-62850的请求, @icon可以很容易地与此结合使用。

Firefox 22 支持网络通知: https :

+1

Firefox 22 支持网络通知: https :

但我认为它有一个重大错误(https://bugzilla.mozilla.org/show_bug.cgi?id=875114,分别为 https://bugzilla.mozilla.org/show_bug.cgi?id=862395)。 然后我可以关闭: https :

在某些用例中,我们可能可以使用网络通知来代替,可以使用各种插件(如tab notifier )将其添加到 Firefox。

在某些用例中,我们可能可以使用网络通知来代替,可以使用各种插件(如选项卡通知程序)将其添加到 Firefox。

但是通过使用 web 通知 api,如果用户允许站点这样做,脚本只能弹出通知。 用户无法选择禁用来自网站的通知,而是通过脚本启用它。

是的,我完全错过了那个方面。 :+1:
解决方法可能是使用秘密密码并将选项卡通知程序配置为仅显示包含它的通知。 根据站点的邪恶程度,一个奇怪的 unicode 字符可能就足够了,甚至可能是一个不可见的字符。

同样,由于网站开始显示用户想要阻止它们的通知,因此需要此 API。 但我也需要显示通知。 因此,用户无法在禁用所有这些通知或启用所有这些通知之间做出选择。 我需要这个 API,以便用户只能允许来自用户脚本的通知。

测试分支:
https://github.com/janekptacijarabaci/greasemonkey/tree/_testBranch_GM_notification

将 API 与 Tampermonkey 同步
另见https://tampermonkey.net/documentation.php#GM_notification

这只是一个测试的东西!

使用函数“ PopupNotifications ”(!=“Web (HTML5) Notification API”)!
(我不需要这个功能 - 现在我会等待解决这个问题: bug 862395

@janekptacijarabaci谢谢,但我发现它有问题...

  1. PopupNotifications.jsm 不是桌面通知:如果浏览器窗口最小化,则不会显示通知。 (是的,这很重要,否则它会变得更没用)
  2. onclick 和 ondone 应该是可选的,但目前它会在没有这些值的情况下失败

(我不确定什么时候会修复错误 862395。但我认为有一个有问题但可用的比没有好。)

测试分支更新:
弹出通知 => 桌面通知

@janekptacijarabaci
谢谢你。

据我了解,目前在测试分支中的实现仅在用户授予站点权限时才允许通知。 就像直接调用Notification 。 用户仍然无法选择禁用来自站点的通知,但允许它使用用户脚本。

我不确定你认为这个 api 应该是什么。 但我希望这个可以与网站内容脚本的不同权限控制一起使用。 (这是 TM 目前所做的。他们总是允许用户脚本显示通知)

@tiansh

问题是怎么做...

Chrome (Tampermonkey) 中的桌面通知有所不同:
https://developer.chrome.com/extensions/desktop_notifications

应授予系统主体(chrome 特权)权限。 但...
使用消息传递(尤其是在 e10s 下) - 杀死所有事件(onclick、ondone)。
该函数可以如下使用:
https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/sandbox.js#L75
(https://github.com/greasemonkey/greasemonkey/blob/3.9/modules/menucommand.js#L90)
但我把它留给社区/arantius(我不确定如何做到最好)。
(我不知道是否有人想这样做:#2275 - http://arewewebextensionsyet.com/#notifications)

我现在没有更好的主意...

但是我已经做了一些尝试......

编辑:
但是...连续两次(或更多)运行 GM_notification() 对我不起作用。

另请参阅错误 1263155 ( 1294332 , 1306822 )...

供参考...
已解决 已解决
https://bugzilla.mozilla.org/show_bug.cgi?id=862395

那么......它是否实施了?

@VBelozyorov ,我不认为它是为 3.x 实现的。 但是对于 4.x #2590

此页面是否有帮助?
0 / 5 - 0 等级