您可以使用browser.storage.local.set
存储数组,还是使用其他方法获得相同的结果?
详细说明:
我的扩展程序目前将重定向通过options.html表单指定的网站。目前,当您指定新网站时,旧网站将被替换。有没有办法可以附加到一系列将被重定向而不是替换网站的网站?
options.js :(将处理来自options.html中表单的信息)
function saveOptions(e) {
e.preventDefault();
browser.storage.local.set({
url: document.querySelector("#url").value
});
}
function restoreOptions() {
function setCurrentChoice(result) {
document.querySelector("#url").value = result.url || "reddit.com";
}
function onError(error) {
console.log(`Error: ${error}`);
}
var getting = browser.storage.local.get("url");
getting.then(setCurrentChoice, onError);
}
document.addEventListener("DOMContentLoaded", restoreOptions);
document.querySelector("form").addEventListener("submit", saveOptions);
redirect.js:
function onError(error) {
console.log(`Error: ${error}`);
}
function onGot(item) {
var url = "reddit.com";
if (item.url) {
url = item.url;
}
var host = window.location.hostname;
if ((host == url) || (host == ("www." + url))) {
window.location = chrome.runtime.getURL("redirect/redirect.html");
}
}
var getting = browser.storage.local.get("url");
getting.then(onGot, onError);
我曾经想过要为每个网址添加一个存储位置,但是还必须存储i
以防止每次加载options.js时它都会重置。 (类似于下面的代码)
var i = 0;
browser.storage.local.set({
url[i]: document.querySelector("#url").value
});
i++;
更合理的解决方案是将url
存储位置作为数组。
如果url
有一种方法可以成为数组,那么redirect.html可能包含以下内容:
if ( (url.includes (host) ) || (url.includes ("www." + host) ) ){
window.location = chrome.runtime.getURL("redirect.html");
}
答案 0 :(得分:0)
新鲜的眼睛解决了我的问题。
在options.js中:
function saveOptions(e) {
e.preventDefault();
var array = (document.querySelector("#url").value).split(",");
browser.storage.local.set({
url: array
});
在redirect.js中:
function onGot(item) {
var url = "";
if (item.url) {
url = item.url;
}
var host = window.location.hostname;
if ( (url.includes(host)) || (url.includes("www." + host)) ) {
window.location = chrome.runtime.getURL("redirect/redirect.html");
}
}