用户脚本通知适用于Chrome而非Firefox?

时间:2016-04-21 20:32:39

标签: javascript greasemonkey userscripts tampermonkey

我有一个用户脚本,如果目标页面上存在某些内容,则会弹出通知。

在Tampermonkey / Chrome下,这不是问题。我可以使用GM_Notification()功能轻松创建通知。

当我尝试在Firefox下执行此操作时,它没有任何相同的行为 检查日志中没有关于该功能的错误,也没有任何通知弹出。

以下是一些示例代码,它们在Firefox + Greasemonkey或Firefox + Tampermonkey中不起作用,但在Chrome + Tampermonkey中有效:

// ==UserScript==
// @name        Test Notifier
// @include     *
// @grant       GM_notification
// @grant       window.focus
// ==/UserScript==

console.log('I am a pretty test script');

var notificationDetails = {
    text: 'THIS IS A TEST NOTIFICATION!!!',
    title: 'TEST',
    timeout: 15000,
    onclick: function() { window.focus(); },
  };
GM_notification(notificationDetails);

这是Firefox的标准行为吗?它是否以完全不同的方式处理HTML5通知(如果有的话)?在Firefox用户脚本中启用通知的常见做法是什么?

1 个答案:

答案 0 :(得分:11)

GM_notification() is not (yet) supported in Greasemonkey (Firefox)。如果你有checked the error console,你会看到这个错误:

  

GM_notification未定义

Greasemonkey有an old feature request to add GM_notification()个;你可以去那里,并敦促领先的GM开发人员尝试赶上Tampermonkey。 :)

在添加该功能之前,您可以使用许多现代浏览器支持的the HTML5(ish) Notifications API“填充”对GM_notification的支持。

添加垫片的测试脚本如下所示。在Firefox和Chrome上都进行了测试,但 也适用于Safari和Opera:

  00 TPerson: [name.first]          TPerson2: [name.first]
  04          [name.middle]                   [name.middle]
  08          [name.last]                     [name.last]
  12          [sex]                           [sex]
  16          [dob]                           [dob]
  24          [maritalStatus]                 [maritalStatus]
  32          [marriageDate]                  [w.marriageDate] [m.marriageDate] [d.marriageDate]
  40          [divorceDate]                                                     [d.divorceDate]
  48          [isFirstDivorceDate]                                              [d.isFirstDivorceDate]