2013-11-26 29 views
0

我已將我的網站設置爲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" 
    ] 

    } 

回答

0

HI我得到了自己的答案..

chrome.runtime.onInstalled.addListener(updateIcon);必須在chrome.browserAction.onClicked.addListener(gotopage)之前調用;