按照文檔打包應用程序,這可能會或可能不會進行功能擴展相同,您可以使用從chrome.app API的的onLaunched事件來運行代碼時,應用程序啓動:
// start doing something when the app first loads....
chrome.app.runtime.onLaunched.addListener(function() {
// all your monitoring code will go here
});
注如果構建擴展,並且擴展應該在瀏覽器加載後立即開始監聽,則可能不需要聲明「onLaunched」偵聽器。
此外,假設您想要始終知道用戶在當前活動選項卡中的URL,則需要監視活動選項卡的更改。該Chrome Tabs API包含了大量的信息,這將有助於你的標籤從推廣工作,例如,這裏是監視更改活動標籤的代碼:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
console.info("This is the url of the tab = " + changeInfo.url);
// do stuff with that url here....
});
如果用戶在活動的URL改變標籤,這個處理器將監測這種變化:
chrome.tabs.onActivated.addListener(function(activeInfo) { .. }
然而,onActivated文檔說以下內容:
時觸發在窗口中進行更改活動標籤。請注意,此事件觸發時,標籤的URL可能不會被設置,但您可以偵聽onUpdated事件,以便在設置URL時收到通知。
因此,您很可能只是使用onUpdated事件示例。
當您在背景頁面中遇到您希望注入JavaScript的頁面時,例如,要使用JavaScript更改網頁的背景顏色,可以使用下面的代碼:
chrome.tabs.executeScript(null,
{code:"document.body.bgColor='red'"});
記住,你的背景頁不能直接運行JavaScript或操縱的web頁面的DOM;因此,您需要以這種方式注入代碼,其中包括注入諸如jQuery和其他您需要的資源。
不要忘記在清單中允許選項卡權限和背景頁面。JSON:
/* in manifest.json */
"permissions": [
"tabs", "http://*/*"
],
"background": {
"scripts": ["background.js"]
},
要jQuery注入的頁面,你基本上寫建立一個腳本元素代碼,然後你會注入到這一點的頁面:在雙
chrome.tabs.executeScript(null,
{code:
"var script = document.createElement('script');" +
"script.setAttribute('src', '//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js');" +
"script.setAttribute('type','text/javascript');" +
"document.getElementsByTagName('head')[0].appendChild(script);"
}
);
代碼報價不會在您的後臺頁面中運行。相反,它在注入頁面時運行。我在雙引號內使用單引號,因此解析器不會感到困惑,並且會拋出字符串文字錯誤。
請注意,可能有更好,更乾淨的方法將這些代碼注入頁面,但對於小的輕微注入,這就足夠了。
請記住,如果jQuery已被注入頁面,您可能會遇到衝突。
您好,在這個問題中,用戶聲稱已在使用一個背景頁面。另外,如果鏈接包含此問題的答案,則應將其發佈在答案中以避免鏈接腐爛。祝你好運! :) – jmort253
如果我有一個'background.js'頁面,我該如何使用jquery – bs7280
以及如何修改'window.addEventListener(「load」,windowLoaded,false);' – bs7280