我已將我的網站設置爲Google Chrome擴展程序。目前發生的情況是,當我點擊擴展名圖標時,它會導航到我的網站的主頁。現在我需要的是,當我安裝擴展程序時(即擴展程序變爲活動狀態)本身,它必須檢查我的網站的頁面是否已在任何其他選項卡中打開。如果未打開,則創建一個新的選項卡。如果它被打開,那麼它必須自動執行所有功能,就像它在我點擊擴展圖標時執行的一樣。 這裏是我的background.js定期檢查標籤的打開
function getGmailUrl() {
return "http://calpinemate.com/";
}
function isGmailUrl(url) {
return url.indexOf(getGmailUrl()) == 0;
}
chrome.browserAction.onClicked.addListener(gotopage);
function gotopage(){
chrome.tabs.query({
url: "http://calpinemate.com/*",
currentWindow: true
}, function(tabs) {
if (tabs.length > 0) {
var tab = tabs[0];
console.log("Found (at least one) Gmail tab: " + tab.url);
console.log("Focusing and refreshing count...");
chrome.tabs.update(tab.id, { active: true });
updateIcon();
} else {
console.log("Could not find Gmail tab. Creating one...");
chrome.tabs.create({ url: getGmailUrl() });
updateIcon();
}
});
}
if (chrome.runtime && chrome.runtime.onStartup) {
chrome.runtime.onStartup.addListener(function() {
updateIcon();
});
} else {
chrome.windows.onCreated.addListener(function() {
updateIcon();
});
}
function updateIcon(){
var req = new XMLHttpRequest();
req.addEventListener("readystatechange", function() {
if (req.readyState == 4) {
if (req.status == 200) {
localStorage.item=req.responseText;
if(localStorage.item==1){
chrome.browserAction.setIcon({path:"calpine_logged_in.png"});
chrome.browserAction.setBadgeBackgroundColor({color:[190, 190, 190, 230]});
chrome.browserAction.setBadgeText({text:""});
}
else{
chrome.browserAction.setIcon({path:"calpine_not_logged_in.png"});
chrome.browserAction.setBadgeBackgroundColor({color:[190, 190, 190, 230]});
chrome.browserAction.setBadgeText({text:""});
}
} else {
// Handle the error
alert("ERROR: status code " + req.status);
}
}
});
req.open("GET", "http://blog.calpinetech.com/test/index.php", true);
req.send(null);
}
這裏正在發生的事情是,當我啓動我的擴展,出現近地址的圖標bar.when我點擊該圖標,在updateIcon()被調用,它讀取其中一個名爲index.php的服務器文件並檢索index.php的輸出,並根據該輸出設置圖標的顏色。現在我需要的是,無需單擊圖標本身(即,當所有上述功能都應定期執行。這意味着當擴展程序處於活動狀態時,它應檢查是否有任何選項卡爲我的網站打開,如果是,則必須相應地更改圖標顏色。請任何人幫助我。我該怎麼做?
這是我的manifest.json
{
"name": "Calpine Extension",
"version": "1.0",
"description": "Log on to calpinemate",
"manifest_version": 2,
"browser_action": {
"default_icon": "icon_128.png"
},
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"browser_action": {
"default_title": "Test Extension",
"default_icon": "calpine_not_logged_in.png"
},
"permissions": [
"*://blog.calpinetech.com/test/index.php",
"alarms",
"notifications"
]
}