Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建chrome.notification实时通知?_Javascript_Jquery_Json_Google Chrome Extension - Fatal编程技术网

Javascript 如何创建chrome.notification实时通知?

Javascript 如何创建chrome.notification实时通知?,javascript,jquery,json,google-chrome-extension,Javascript,Jquery,Json,Google Chrome Extension,使用GoogleChromeAPI扩展,我有以下代码显示来自JSON的通知。一旦通知被显示,当我点击它打开多个标签url(这是一个错误)。我需要解决这个问题,因为这应该只打开一个标签url,这是唯一的问题。请看下面的代码: var timeChange = 1000, jsons = ['JSON_URL']; updateValue = function() { var colorStatus = 0; chrome.storage.local.get(function (

使用GoogleChromeAPI扩展,我有以下代码显示来自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();

您正在附加一个
chrome.notifications。当您运行
updateValue
时,每秒单击一次
listener。至少应该将侦听器移到方法之外

沿着这条思路应该会奏效

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();

非常感谢亚伯拉罕,这解决了我的问题,很好的观察。