防止Chrome扩展程序popup.html自行打开

时间:2011-05-19 18:10:36

标签: javascript jquery google-chrome-extension

我正在创建一个Chrome扩展程序,其中包含background.html文件,该文件每分钟从API请求一次信息。收到信息后,它会发送popup.html消息,其中包含弹出窗口用于将新HTML元素附加到弹出框体上的JSON信息。

问题是后台一直在运行(应该如此),但即使弹出窗口关闭,它也会弹出。这导致弹出窗口每分钟都打开一次,这非常烦人。

我想知道,有没有办法看看popup是否关闭,如果是这样的话,什么都不做?或者还有另一种方法可以防止弹出窗口自行打开吗?

以下是Github repository,但重要部分如下所示。

以下是我在弹出窗口的方法:

// background.js

function sendQuestions()                                                                                                                                                                                    
{                                                                                                                                                                                                           
    var questions = JSON.parse(db.getItem(storage));                                                                                                                                                        
    chrome.extension.sendRequest(appid, { 'questions': questions }, function() {});                                                                                                                         
}  

setInterval(sendQuestions, 60e3);

这是弹出窗口处理它的方式:

// popup.js

chrome.extension.onRequest.addListener(function(request) {                                                                                                                                                  
    if (request.questions) {                                                                                                                                                                                
        displayQuestions(request.questions);                                                                                                                                                                
    }
});

function displayQuestions(questions)                                                                                                                                                                        
{     
    for (i = 0; i < questions.length; i++) {                                                                                                                                                                
        var question = questions[i];  
        var htmlBlock = // ... generate a block of html ...
        $('#container').prepend(htmlBlock);
    }
}

1 个答案:

答案 0 :(得分:0)

随时打开一个长lived connection从弹出窗口到background_page。在background_page中,您可以检查连接当前是否处于活动状态。如果传递必要的消息,则等待连接激活。