我如何创建chrome.通知实时

How can I create chrome.notification real Time?

本文关键字:chrome 通知 实时 创建 何创建      更新时间:2023-09-26

使用google chrome Api扩展,我有以下代码显示JSON通知。一旦通知显示,当我点击它打开多个标签url(这是一个错误)。我需要解决这个问题,因为这应该只打开一个标签url,这是唯一的问题。看看下面的代码:

var timeChange = 1000, jsons = ['JSON_URL'];
updateValue = function() {
    var colorStatus = 0;
    chrome.storage.local.get(function (dataStorage) {
            $.getJSON(jsons+'?'+$.now(), function (data) {   
            var jLastPost = {'LastNotification':''}, sizePost = (data.results.length - 1),     dataLastPost = data.results[0];
            totalEntradas = data.totalEntradas ? data.totalEntradas : '';   
            $.each(data.results, function (k,v) {
                if (($.inArray('post-'+v.id, dataStorage.IDs) !== -1) && (v.date_status > 0)) {
                colorStatus = 1;
                }
            });
            chrome.browserAction.setBadgeText({'text': totalEntradas.toString()});
            if (dataStorage.LastNotification !== dataLastPost.id) 
            {
                jLastPost.LastNotification = dataLastPost.id;
                chrome.storage.local.set(jLastPost);
                chrome.notifications.create(dataLastPost.id,{
                    type: 'basic',
                    title: dataLastPost.titulo,
                    message: 'Now for you!',
                    iconUrl: dataLastPost.image
                }, function (id) {});
                chrome.notifications.onClicked.addListener(function () {
                     chrome.tabs.create({url: dataLastPost.uri});
                });
                chrome.notifications.clear(dataLastPost.id, function() {});
                return false;
            }
        });
    }); 
setTimeout(updateValue, timeChange);
}   
updateValue();

运行updateValue时,每秒附加一个chrome.notifications.onClicked侦听器。您至少应该将侦听器移出方法。

这些应该可以工作。

var timeChange = 1000, jsons = ['JSON_URL'];
var lastPostUri;
chrome.notifications.onClicked.addListener(function () {
    if (lastPostUri) {
        chrome.tabs.create({url: lastPostUri});
    }
});
updateValue = function() {
    var colorStatus = 0;
    chrome.storage.local.get(function (dataStorage) {
            $.getJSON(jsons+'?'+$.now(), function (data) {   
            var jLastPost = {'LastNotification':''}, sizePost = (data.results.length - 1),     dataLastPost = data.results[0];
            totalEntradas = data.totalEntradas ? data.totalEntradas : '';   
            $.each(data.results, function (k,v) {
                if (($.inArray('post-'+v.id, dataStorage.IDs) !== -1) && (v.date_status > 0)) {
                colorStatus = 1;
                }
            });
            chrome.browserAction.setBadgeText({'text': totalEntradas.toString()});
            if (dataStorage.LastNotification !== dataLastPost.id) 
            {
                jLastPost.LastNotification = dataLastPost.id;
                chrome.storage.local.set(jLastPost);
                lastPostUri = dataLastPost.uri
                chrome.notifications.create(dataLastPost.id,{
                    type: 'basic',
                    title: dataLastPost.titulo,
                    message: 'Now for you!',
                    iconUrl: dataLastPost.image
                }, function (id) {});
                chrome.notifications.clear(dataLastPost.id, function() {});
                return false;
            }
        });
    }); 
setTimeout(updateValue, timeChange);
}   
updateValue();