5
我正在創建一個Chrome擴展程序,其中包含一個每分鐘向API請求一次信息的background.html
文件。一旦它收到信息,它就會通過彈出窗口用來將新的HTML元素附加到彈出窗體上的JSON信息來發送消息popup.html
。防止Chrome擴展程序的popup.html打開自己
問題是背景是不斷運行(因爲它應該),但它會ping彈出,即使彈出窗口關閉。這會導致彈出窗口每分鐘打開一次,這非常煩人。
我想知道,有沒有辦法查看彈出窗口是否關閉,如果出現這種情況,請不要做任何事情?還是有另一種方法來防止彈出自己的開放?
這是Github repository,但重要的部分在下面突出顯示。
這裏是我如何執行ping彈出:
// 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);
}
}
你能告訴你如何ping彈出?如果它導致彈出打開它將是真棒,因爲AFAIK是不可能以編程方式打開之前:) – serg 2011-05-19 18:17:28
我添加了一個變量'isPopup = true'到popup.html,然後使用'getViews' from background.html,並且然後檢查每個視圖是否具有'isPopup'屬性。在這種情況下彈出窗口被打開,否則不會。 http://code.google.com/chrome/extensions/extension.html#method-getViews – pimvdb 2011-05-19 18:31:24
@pimvbd通訊只在'popup.html'和'background.html'之間,所以我知道誰是誰。但是有沒有辦法告訴彈出窗口當前是從後臺關閉的?在這種情況下,我可以使用該布爾值來防止背景發送消息。 – theabraham 2011-05-19 18:50:00