我该如何收听通知?

时间:2013-04-11 13:07:34

标签: google-chrome-extension

扩展程序是否有办法为浏览器通知添加侦听器并访问其内容? 我正在尝试使用Google日历的通知启动自定义功能。

3 个答案:

答案 0 :(得分:9)

您可以挂钩webkitNotifications.createNotification函数,以便在创建通知时运行某些特定代码。

  1. 创建一个名为 notifhook.js 的文件:

    (function() {
        // save the original function
        var origCreateNotif = webkitNotifications.createNotification;
    
        // overwrite createNotification with a new function
        webkitNotifications.createNotification = function(img, title, body) {
    
            // call the original notification function
            var result = origCreateNotif.apply(this, arguments);
    
            // bind a listener for when the notification is displayed
            result.addEventListener("display", function() {
                // do something when the notification is displayed
                // use img, title, and body to read the notification
                // YOUR TRIGGERED CODE HERE!
            });
    
            return result;
        }
    })();
    
  2. 接下来,在您的清单web_accessible_resources list中添加notifhook.js

  3. 最后,在content script中,将<script>元素注入到notifhook.jssrc的页面中:

    var s = document.createElement("script");
    s.src = chrome.extension.getURL("notifhook.js");
    document.documentElement.appendChild(s);
    
  4. 您可能只想使用notifhook.js作为内容脚本,但这不起作用,因为内容脚本和网页都有separate execution environments。覆盖内容脚本的webkitNotifications.createNotification版本根本不会影响Google日历页面。因此,您需要通过<script>标记注入它,这将影响页面和内容脚本。

答案 1 :(得分:1)

上面的代码很旧,不再适用了。然而,作者接近拦截的方法仍然是可以在多个页面上应用的相同且非常有用的技巧。

我有关于如何访问的更新:How to capture or listen to browser notifications?

答案 2 :(得分:0)

如果您想要的是Chrome扩展程序,则会发送通知捕获Google日历。如果我没弄错的话,谷歌的日历会发送邮件和短信通知。此外,我认为没有API函数可以询问是否有待处理的通知。文档中唯一的内容是,Google+事件通知会发送到Google+,并且可能会捕获对API的访问权。