Javascript 防止Chrome扩展';s popup.html,使其无法打开自身
我正在创建一个Chrome扩展,它有一个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弹出窗口。这会导致弹出窗口每分钟自动打开,这非常烦人 我想知道,是否有一种方法可以查看弹出窗口是否关闭,如果是这种情况,是否不做任何事情?或者有没有其他方法可以防止弹出窗口自行打开 以下
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
属性,您就知道弹出窗口是否打开了。哦,我明白了!我马上就去试试。