## 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`可以自動獲取到選中文本。

`background`調試:打開`chrome://extensions/ `,且激活開發者模式,點擊對應插件“檢查視圖”后的“背景頁”
更多關于右鍵菜單:《瀏覽器的UI界面 - > [右鍵菜單](右鍵菜單.md)》
可以在下面的地方(記得勾選開發者模式)查看`background`運行情況:

**何時使用**
需要持續運行在后臺的
**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)
- 前言
- 致讀者
- 第一章 什么是Chrome擴展
- 第二章 manifest.json
- 常用配置
- background
- content-scripts
- popup
- web_accessible_resources
- devtools_page
- Command Line API
- homepage_url
- permissions
- 第三章 5種類型的Javascript
- 權限對比
- 消息傳遞
- 短連接
- 長連接
- 調試方式
- 第四章 瀏覽器的UI界面
- Browser Actions
- Page Actions
- 右鍵菜單
- 桌面通知
- Omnibox
- 選項頁
- 覆蓋特定頁
- 第五章 Chrome應用開發
- 擴展與應用的異同
- 一個簡單的Chrome應用
- 應用窗口
- 應用窗口
- 美化窗口
- 窗口事件
- webview
- 應用相關API
- 第六章 打包與發布擴展應用
- 第七章 常用API
- 右鍵菜單(contextMenus)
- 鍵盤快捷鍵(commands)
- cookies ?
- 事件(events)
- Extension ?
- 瀏覽器歷史記錄(history) ?
- 消息通知(notifications)
- 擴展管理(management) ?
- 本地存儲(storage)
- 標簽頁(tabs) ?
- 書簽(bookmarks) ?
- Runtime
- 窗口(windows) ?
- 第八章 擴展
- 主題
- 國際化 (i18n)
- 已安裝的擴展
- 附錄A 參考資料