按照文档打包应用程序,这可能会或可能不会进行功能扩展相同,您可以使用从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