Javascript 防止Chrome扩展';s popup.html,使其无法打开自身

Javascript 防止Chrome扩展';s popup.html,使其无法打开自身,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在创建一个Chrome扩展,它有一个background.html文件,每分钟从API请求一次信息。一旦接收到信息,它就会发送带有JSON信息的消息popup.html,popup使用JSON信息将新的html元素附加到popup的主体上 问题是后台一直在运行(应该是这样),但即使弹出窗口关闭,它也会ping弹出窗口。这会导致弹出窗口每分钟自动打开,这非常烦人 我想知道,是否有一种方法可以查看弹出窗口是否关闭,如果是这种情况,是否不做任何事情?或者有没有其他方法可以防止弹出窗口自行打开 以下

我正在创建一个Chrome扩展,它有一个
background.html
文件,每分钟从API请求一次信息。一旦接收到信息,它就会发送带有JSON信息的消息
popup.html
,popup使用JSON信息将新的html元素附加到popup的主体上

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

我想知道,是否有一种方法可以查看弹出窗口是否关闭,如果是这种情况,是否不做任何事情?或者有没有其他方法可以防止弹出窗口自行打开

以下是最重要的部分,但重要的部分在下面突出显示

以下是我ping弹出窗口的方式:

// background.js

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

setInterval(sendQuestions, 60e3);
以下是popup如何处理它:

// 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);
    }
}
//popup.js
chrome.extension.onRequest.addListener(函数(请求){
如果(请求.问题){
显示问题(request.questions);
}
});
功能显示问题(问题)
{     
对于(i=0;i
随时打开从弹出窗口到后台页面的长窗口。在后台页面中,您可以检查连接当前是否处于活动状态。如果需要,请传递必要的消息,否则请等待连接激活。

能否显示ping弹出窗口的方式?如果它导致弹出窗口打开,那就太棒了,因为之前无法通过编程方式打开它:)我在popup.html中添加了一个变量
ispoup=true
,然后使用background.html中的
getViews
,然后检查每个视图是否具有
ispoup
属性。在这种情况下,弹出窗口打开,否则不会打开@pimvbd该通信仅在
popup.html
background.html
之间进行,因此我知道谁是谁。但是,有没有办法从后台判断弹出窗口当前已关闭?在这种情况下,我可以使用该布尔值来阻止后台发送消息。@Gisborne:嗯,
getViews
只返回当前打开的窗口,即始终返回bg,有时返回弹出窗口。只要检查返回的窗口是否包含
ispoup
属性,您就知道弹出窗口是否打开了。哦,我明白了!我马上就去试试。