## background 通常把需要长时间运行的、全局的代码放在`background`里面,它运行在一个独立运行环境,其实也可以说是运行在“后台”的一个页面,它是与当前浏览页面无关的。 在Manifest配置中,可以通过`page`指定一张网页,也可以通过`scripts`直接指定一个JS,Chrome会自动为这个JS生成一个默认的网页。 ``` { "background": { // "page": "background.html", "scripts": ["js/background.js"] } } ``` **1. Google翻译** 使用Google翻译选中文本(实例:`Custom Contextmenus`): ``` // manifest.json { "background": { "scripts": ["background.js"] }, // 申请权限 "permissions": [ "tabs", "contextMenus" ] } // background.js chrome.contextMenus.create({ title: 'Google翻译:%s', contexts: ['selection'], onclick: function(info, tab) { chrome.tabs.create({url: 'https://translate.google.cn/#en/zh-CN/' + encodeURI(info.selectionText)}); } }, function() { console.log(chrome.extension.lastError); }) ``` `%s`可以自动获取到选中文本。 ![](https://box.kancloud.cn/b8dae8438cd0045fcdb559f1a4b55b5e_370x178.png) `background`调试:打开`chrome://extensions/ `,且激活开发者模式,点击对应插件“检查视图”后的“背景页” 更多关于右键菜单:《浏览器的UI界面 - > [右键菜单](右键菜单.md)》 可以在下面的地方(记得勾选开发者模式)查看`background`运行情况: ![](https://box.kancloud.cn/f0c5c4fcb629eff49133c9b1d5c5e884_597x165.png) **何时使用** 需要持续运行在后台的 **event-pages** 除了上面的**后台页面**`background`,还有一种**事件页面**`event-pages`,它是在被需要时加载,在空闲时被关闭的后台脚本。 要使用它,只需简单的改一下`manifest.json`: ``` { "background": { "scripts": ["event-page.js"], "persistent": false }, } ``` **后台页面和事件页面的区别** 两者区别在于,后台页面(`background`)持续运行,它的生存周期和浏览器相同,也就是说从打开浏览器到关闭浏览器期间,后台脚本一直在运行,一直占据着内存等系统资源;而事件页面(`event page`)只在需要活动时活动,在完全不活动的状态持续几秒后,chrome将会终止其运行,从而释放其占据的系统资源,而在再次有事件需要后台脚本来处理时,重新载入它。 `background`完整API: [https://developer.chrome.com/extensions/background_pages](https://developer.chrome.com/extensions/background_pages)