如何使用 chrome.storage.sync.remove 从数组中删除一项?
How do I delete one item from an array with chrome.storage.sync.remove?
我正在构建一个 Chrome 浏览器扩展程序,其中包含允许用户保存 url 的功能。我使用 chrome.storage.sync
来创建此功能并且没有遇到任何问题。
但是,我还需要让用户删除他们已经保存的 url。我创建了一个文本输入框,他们可以在其中输入他们想要删除的单个 url(即 "www.url.com")。我想将此输入转换为字符串,并在用户按下按钮时使用它从 Chrome 存储中删除匹配的字符串。
我认为 chrome.storage documentation 指定 chrome.storage.sync.remove
可用于从存储的数组中删除字符串,但我无法让它工作。这是我的代码:
function removeUrl() {
var theUrl = document.getElementById('url-input').value;
chrome.storage.sync.get(null, function(result, error) {
// Checks if the array (urlList) exists:
if ('urlList' in result) {
var theList = result['urlList'];
// Checks if the url that will be deleted is in the array:
if (theList.includes(theUrl)) {
chrome.storage.sync.remove(theUrl);
chrome.runtime.reload();
}
}
// Error handling goes here
});
}
这段代码不会抛出任何错误,但它也不会从数组中删除 url。
请注意,我一次只想删除 1 个 url,数组中没有重复的 url,而且我没有使用任何像 jQuery 这样的库.我究竟做错了什么?
你不能这样做,因为 chrome.storage
是一个 key-value 存储。
在您的特定示例中,您试图从存储中删除数组的一个元素,但存储仅包含数组的键。
此处最好的解决方案是从数组中删除该值,然后再次将数组设置为 chrome.storage
。
var theList = result['urlList'];
// Checks if the url that will be deleted is in the array:
if (theList.includes(theUrl)) {
// create a new array without url
var newUrlList = arr.filter(function(item) {
return item !== theUrl;
});
// set new url list to the storage
chrome.storage.sync.set({ 'urlList': newUrlList });
chrome.runtime.reload();
}
我正在构建一个 Chrome 浏览器扩展程序,其中包含允许用户保存 url 的功能。我使用 chrome.storage.sync
来创建此功能并且没有遇到任何问题。
但是,我还需要让用户删除他们已经保存的 url。我创建了一个文本输入框,他们可以在其中输入他们想要删除的单个 url(即 "www.url.com")。我想将此输入转换为字符串,并在用户按下按钮时使用它从 Chrome 存储中删除匹配的字符串。
我认为 chrome.storage documentation 指定 chrome.storage.sync.remove
可用于从存储的数组中删除字符串,但我无法让它工作。这是我的代码:
function removeUrl() {
var theUrl = document.getElementById('url-input').value;
chrome.storage.sync.get(null, function(result, error) {
// Checks if the array (urlList) exists:
if ('urlList' in result) {
var theList = result['urlList'];
// Checks if the url that will be deleted is in the array:
if (theList.includes(theUrl)) {
chrome.storage.sync.remove(theUrl);
chrome.runtime.reload();
}
}
// Error handling goes here
});
}
这段代码不会抛出任何错误,但它也不会从数组中删除 url。
请注意,我一次只想删除 1 个 url,数组中没有重复的 url,而且我没有使用任何像 jQuery 这样的库.我究竟做错了什么?
你不能这样做,因为 chrome.storage
是一个 key-value 存储。
在您的特定示例中,您试图从存储中删除数组的一个元素,但存储仅包含数组的键。
此处最好的解决方案是从数组中删除该值,然后再次将数组设置为 chrome.storage
。
var theList = result['urlList'];
// Checks if the url that will be deleted is in the array:
if (theList.includes(theUrl)) {
// create a new array without url
var newUrlList = arr.filter(function(item) {
return item !== theUrl;
});
// set new url list to the storage
chrome.storage.sync.set({ 'urlList': newUrlList });
chrome.runtime.reload();
}