chrome.notifications.onClosed 在 google chrome 扩展的 background.js 中不起作用

Posted

技术标签:

【中文标题】chrome.notifications.onClosed 在 google chrome 扩展的 background.js 中不起作用【英文标题】:chrome.notifications.onClosed not working in background.js for the google chrome extension 【发布时间】:2019-06-21 23:46:27 【问题描述】:

我正在构建一个非常基本的谷歌浏览器扩展程序,它必须监听所有收到的通知来自谷歌浏览器!

我的扩展的文件结构;

manifest.json background.js 图标 main.png

manifest.json

    
    "manifest_version": 2,
    "name": "My Extension",
    "version": "1.0.0",
    "browser_action": 
        "default_icon":                    
          "16": "icons/main.png",          
          "24": "icons/main.png",           
          "32": "icons/main.png"            
        
    ,
    "background": 
        "scripts": ["background.js"],
        "persistent": false
    ,
    "permissions": [
        "notifications"
      ]

background.js

console.log('Lady Gaga');

chrome.browserAction.onClicked.addListener(function()
    console.log('Clicked');
);

chrome.notifications.onClosed.addListener(function (s,b)
    console.log('notification Closed');
);

chrome.notifications.onClicked.addListener(function ()
    console.log('notification Clicked');
);

chrome.notifications.onButtonClicked.addListener(function ()
    console.log('notification Button Clicked');
);

所以如果我点击我的扩展按钮

chrome.browserAction.onClicked

已触发,当我检查后台 LOGS 时,我可以看到“Lady Gaga”和“Clicked”日志被触发了!

接下来,我正在尝试查看通知侦听器的日志。为了触发通知的听众,我们找到了一个网站,其中包含可以轻松发送通知的基本 html 按钮。

https://web-push-book.gauntface.com/demos/notification-examples/

我正在使用这个网站自己发送通知来测试后台事件侦听器,这些侦听器被定义为通知事件的侦听器。

但是没有一个通知事件没有触发,正常工作。我看不到“通知按钮已点击”或“通知已关闭”之类的任何日志

这种情况有什么问题?

【问题讨论】:

【参考方案1】:

ma​​nifest.json


    "manifest_version" : 2,
    "name" : "demo1",
    "description" : "Demo",
    "version" : "0.1",
    "background" :  
        "scripts" : ["background.js"],
        "persistent" : false
    ,
    "permissions" : [
        "notifications"
    ]

background.js

var description = "dvcvv";
var news = "cvcvcvcvcvcvcvcvcv"; 
var pattern = 
    OPTION : "list",    
;

var a1 = 
    title : "xxxxxxxxxxxxxxxxxx",
    message : "dsdsdsdX"
;
var a2 = 
    title : "yyyyyyyyyyyy",
    message : "sdsdsdsdY"
;
var butt1 = 
    title : "Button 1 "
;
var butt2 = 
    title : "Button 2"
;

var notifopt = 
    type : pattern.OPTION,
    iconUrl : "icon.png",
    title : description,
    message : news,
    buttons : [butt1,butt2],
    items : [a1,a2]
;


chrome.notifications.create(notifopt,function() 
    console.log('Lady Gaga');
);

chrome.notifications.onClicked.addListener(function()  
    console.log('notification Clicked');

);
chrome.notifications.onClosed.addListener(function() 
    console.log('notification Closed');
);
chrome.notifications.onButtonClicked.addListener(function() 
    console.log('notification Button Clicked');
);

google chrome --> 更多工具 --> 扩展 --> 加载解压 --> 刷新扩展 --> 显示通知 --> 点击 button1 --> 点击 查看视图页面,在后台 - -> 你会看到 console.log

【讨论】:

我怎样才能收听扩展中未触发的任何其他通知? 你可以使用navigator.serviceWorker***.com/questions/39418545/… 例如,producthunt 每天两次向我发送桌面通知。这个当前代码可以处理这个外部桌面通知吗? 我想这就是你想要的:developer.chrome.com/extensions/desktop_notifications 我在 chrome.extension 文档中没有找到更多

以上是关于chrome.notifications.onClosed 在 google chrome 扩展的 background.js 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章