创建Chrome扩展程序以通过键盘快捷键关闭通知

时间:2018-09-18 15:26:56

标签: javascript google-chrome google-chrome-extension notifications shortcut

我是Chrome扩展程序开发的新手。我目前正在寻找一个Chrome扩展程序来关闭通知。我希望通过快捷键一次激活该扩展。

在查看下面的代码之前,我想知道alert确实出现了……但是Chrome扩展程序页面显示了错误:

  

“ commands.onCommand的事件处理程序中发生错误:TypeError:无法读取未定义的属性'getAll'”

在线:

chrome.notifications.getAll((items) => {

chrome.notifications对象是未定义的,因此Chrome似乎认为没有当前的通知正在显示...这很奇怪,因为确实存在,如图所示。

请问有人对此情况有所帮助吗?


manifest.json:
{
"name": "ClearAll",
"version": "1.0",
"description": "Clear notifications!",
"background": {
  "scripts": ["background.js"],
  "persistent": false
},

"commands": {
  "clear": {
    "suggested_key":{
      "default": "Alt+Shift+S" 
    },
    "description": "Executes clear"
 }
},
"manifest_version": 2
}

background.js:

chrome.commands.onCommand.addListener(function(command) {
    if (command == 'clear') {
      alert("testing");
      chrome.notifications.getAll((items) => {
        if (items) 
          for (let key in items) 
            chrome.notifications.clear(key);
      });
    }
});

错误:

Image: Cannot read property 'getAll' of undefined error

2 个答案:

答案 0 :(得分:0)

您需要向清单中添加notifications权限

{
    "name": "ClearAll",
    "permissions": ["notifications"],
    .......
}

答案 1 :(得分:0)

您可能已经知道了这一点,但是对于以后偶然发现此问题的任何人:不可能编写一个扩展程序以在Chrome上消除 all 通知,因为任何用于访问用户浏览器范围的通知的扩展;通过notifications中的manifest.json权限,您可以创建和清除由您的扩展名创建的通知。的确,如果允许任何扩展名这样做将违反隐私!

https://developer.chrome.com/apps/notifications#method-getAll

检索应用或扩展程序(重点是我)的所有通知。