2011-12-24 48 views
2

如何在後臺頁面的選項頁面中調用函數?Chrome擴展程序:是否可以在背景頁面的選項頁面中調用功能?

例如,在選項頁面,您可以撥打:

chrome.extension.getBackgroundPage().updateIcon("someDifferentIcon.png"); 

從而從選項頁的背景頁面通信。你如何與後臺頁面的選項頁面進行通信?

一個可能的困難是選項頁面並不總是打開(不像背景),所以這可以解釋爲什麼它不是內置的(如上圖)。我的問題是,有可能做到嗎?

+0

你是什麼意思?一個例子總是有用的。 – 2011-12-24 07:11:20

+0

謝謝,參見上文。 – Shazam 2011-12-24 22:45:01

回答

4

一個簡單的方法來實現你的想法是使用「chrome.extension.sendRequest」API。例如:

options.js:

chrome.extension.sendRequest({id:"updateIcon", filename:"foo.png"}); 

background.js:

chrome.extension.onRequest.addListener(funciton(request) { 
    if (request && (request.id == "updateIcon")) 
     updateIcon(chrome.extension.geURL(request.filename)); 
}); 
1

如果選項頁面已經打開,您可以使用chrome.extension.getViews({type:"tab"})來獲取其窗口對象,然後調用它的函數(您需要遍歷返回的視圖並選擇URL爲您的選項頁面的URL)。如果尚未打開,則可以使用tabs API打開指向它的選項卡,然後使用chrome.extension.getViews

相關問題