在开发 Chrome 扩展时,可能需要在不同设备之间同步用户的选项和设置。Chrome 提供了 chrome.storage.sync
API 来实现这一功能。以下是如何使用 chrome.storage.sync
来同步 Chrome 扩展选项的详细步骤:
manifest.json
首先,确保在 manifest.json
文件中声明了 storage
权限。
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0",
"permissions": [
"storage"
],
"background": {
"service_worker": "background.js"
},
"options_page": "options.html"
}
创建一个选项页面(例如 options.html
),用户可以在其中设置扩展的选项。
<!-- options.html -->
<!DOCTYPE html>
<html>
<head>
<title>Extension Options</title>
<script src="options.js"></script>
</head>
<body>
<h1>Extension Options</h1>
<label>
<input type="checkbox" id="myOption"> Enable Feature
</label>
<button id="save">Save</button>
</body>
</html>
在选项页面的脚本中,使用 chrome.storage.sync
来保存和加载用户的设置。
// options.js
document.addEventListener('DOMContentLoaded', () => {
// 加载选项
chrome.storage.sync.get(['myOption'], (result) => {
document.getElementById('myOption').checked = result.myOption || false;
});
// 保存选项
document.getElementById('save').addEventListener('click', () => {
const myOption = document.getElementById('myOption').checked;
chrome.storage.sync.set({ myOption }, () => {
console.log('Options saved.');
});
});
});
在扩展的其他部分(例如 background.js
或内容脚本)中,可以使用 chrome.storage.sync.get
来获取用户的设置。
// background.js
chrome.runtime.onInstalled.addListener(() => {
// 获取选项
chrome.storage.sync.get(['myOption'], (result) => {
if (result.myOption) {
console.log('Feature is enabled.');
// 执行相应的操作
} else {
console.log('Feature is disabled.');
}
});
});
chrome.storage.sync
有配额限制,具体限制可以参考 Chrome Storage API 文档。chrome.storage.local
,但这不会在设备之间同步。