【发布时间】:2016-04-29 16:40:29
【问题描述】:
我正在创建一个 chrome 扩展,其中包含 JSON 格式的信息
options.js:
var data = {
"websites" : [
{
id: 1,
'baseURL': 'http://www.monoprice.com/search/index?keyword=',
'spaceValue': '+',
'img': 'monoprice.png',
'name': 'Monoprice'
},
{
id: 2,
'baseURL': 'https://www.youtube.com/results?search_query=',
'spaceValue': '+',
'img': 'youtube.png',
'name': 'Youtube'
},
{
id: 3,
'baseURL': 'http://www.amazon.com/s/field-keywords=',
'spaceValue': '%20',
'img': 'amazon.png',
'name': 'Amazon'
},
{
id: 4,
'baseURL': 'http://stackoverflow.com/search?q=',
'spaceValue': '+',
'img': 'stack.png',
'name': 'Stack'
}
]
};
function save_options() {
var itemOne = document.getElementById('1').value;
var itemTwo = document.getElementById('2').value;
var itemThree = document.getElementById('3').value;
var itemFour = document.getElementById('4').value;
chrome.storage.sync.set({
'One': itemOne,
'Two': itemTwo,
'Three': itemThree,
'Four': itemFour,
}, function() {
// Update status to let user know options were saved.
var status = document.getElementById('status');
status.textContent = 'Options saved.';
setTimeout(function() {
status.textContent = '';
}, 750);
});
}
// Restores select box and checkbox state using the preferences
// stored in chrome.storage.
function restore_options() {
// Use default value color = 'red' and likesColor = true.
chrome.storage.sync.get({
"One": "none",
"Two": "none",
"Three": "none",
"Four": "none",
}, function(items) {
document.getElementById('1').value = items.One;
document.getElementById('2').value = items.Two;
document.getElementById('3').value = items.Three;
document.getElementById('4').value = items.Four;
});
}
document.addEventListener('DOMContentLoaded', restore_options);
document.getElementById('save').addEventListener('click', save_options);
有了这些信息,我希望用户选择将此信息应用于实际 chrome 扩展的顺序。
扩展图片:
我在 options.html 页面中使用下拉菜单:
options.html:
<!DOCTYPE html>
<html>
<head><title>My Test Extension Options</title></head>
<body>
<select id="1">
<option value="">None</option>
<option value="amazon">Amazon</option>
<option value="youtube">Youtube</option>
<option value="monoprice">Monoprice</option>
<option value="stack">Stack</option>
</select>
<select id="2">
<option value="">None</option>
<option value="amazon">Amazon</option>
<option value="youtube">Youtube</option>
<option value="monoprice">Monoprice</option>
<option value="stack">Stack</option>
</select>
<select id="3">
<option value="">None</option>
<option value="amazon">Amazon</option>
<option value="youtube">Youtube</option>
<option value="monoprice">Monoprice</option>
<option value="stack">Stack</option>
</select>
<select id="4">
<option value="">None</option>
<option value="amazon">Amazon</option>
<option value="youtube">Youtube</option>
<option value="monoprice">Monoprice</option>
<option value="stack">Stack</option>
</select>
<div id="status"></div>
<button id="save">Save</button>
<script src="options.js"></script>
</body>
</html>
但我不知道如何以编程方式链接所选下拉菜单和 JSON 数组,然后使用 chrome.storage.sync.set({}); 存储和调用该数据
谢谢!
我知道这可能会造成混淆,我很乐意提供任何所需的说明。
【问题讨论】:
-
您对哪个部分有问题?或者更确切地说,你可以自己做哪些部分?你能提供一些带有“这里我不知道该怎么做”部分的骨架代码吗?
-
@Xan 我已使用完整代码(options.html 和 options.js)编辑了帖子。因为它可以保存和存储下拉值,但正如您所见,它很丑陋且不可扩展。我想知道如何使用下拉列表中的值来引用,然后正确保存和恢复 JSON 数据。
-
此时基本上是数据组织问题。它澄清了你的问题,谢谢。
标签: javascript html json google-chrome-extension