2013-11-24 64 views
1

我有這樣的代碼爲我background.jsChrome擴展使得擴展活躍,只有當比賽匹配

function changeActive(tabId, changeInfo, tab){ 
    console.log(tab); 
    chrome.pageAction.setPopup({ 
    "popup":"popup.html" 
    }); 
    chrome.pageAction.setIcon({ 
    "path":"Facebook-icon16.png" 
    }); 
    } 
chrome.tabs.onUpdated.addListener(changeActive); 

我的清單具有這樣的:

... "content_scripts": [ 
{ 
    "matches": ["https://www.facebook.com/*"], 
    "css": ["messenger.css"], 
    "js":["messenger.js"], 
    "run_at":"document_start" 
} 
], 
    "version": "0.2", 
"permissions": [ 
     "activeTab","tabs" 
     ] 
    } 

正如你可以看到我想匹配,如果網址是Facebook,然後更改圖標圖像並顯示彈出窗口。我也不想他們能夠既然你已經使用了內容腳本它是點擊該圖標,如果它不是Facebook標籤

+0

您是否嘗試過我的建議解決方案?它有用嗎? – gkalpak

+0

不,我沒有,我很快就會到達,我一直在小型項目上工作,以適應谷歌Chrome * API。 – EasyBB

回答

2

上一個好主意,以告知背景 - 利用Message Passing頁面,它應該改變圖標和彈出。
例如: -

messenger.js

chrome.runtime.sendMessage({ onFacebook: true }); 

background.js

/* When the content scripts makes contact, 
* set the page-action's icon and popup */ 
chrome.runtime.onMessage.addListener(function(msg, sender) { 
    if (msg.onFacebook === true) { 
     chrome.pageAction.setIcon({ 
      tabId: sender.tab.id, 
      path: "path/to/active/icon.png" 
     }); 
     chrome.pageAction.setPopup({ 
      tabId: sender.tab.id, 
      popup: "path/to/popup.html" 
     }); 
    } 
}); 

/* When the tab's address changes/reloads, 
* clear the popup and reset the icon. 
* (If applicable, the newly injected content script will send a new message.) */ 
chrome.tabs.onUpdated.addListener(function(tabId, info, tab) { 
    if (info.status === "loading") { 
     chrome.pageAction.setIcon({ 
      tabId: tabId, 
      path: "path/to/inactive/icon.png." 
     }); 
     chrome.pageAction.setPopup({ 
      tabId: tabId, 
      popup: "" 
     }); 
    } 
}); 

另外,還要注意:

+0

我使用show hide方法。我不得不使用send.tab.id而不是tabId,因爲它沒有被定義。除此之外,它完美謝謝 – EasyBB