Ошибка разделения синхронизации хранилища Chrome
Здравствуйте! В настоящее время я создаю расширение для Chrome, которое автоматизирует веб-сайт, и на html-странице я сохраняю данные проверки пользователей с помощью localStorage.
Затем я понял, что вы не можете вызвать локальное хранилище в content_script, так что я сделал это на html-странице, где я установил и получил локальное хранилище.
это то, что я использую, чтобы сохранить информацию о проверке пользователей на html-странице оформления заказа, чтобы он мог видеть и изменять ее, когда они хотят:
var autofill = localStorage.getItem("checkout-info");
var filler = autofill.split(",");
$("#name").val(filler[0]);
$("#email").val(filler[1]);
$("#tel").val(filler[2]);
chrome.storage.sync.set({'autofiller': autofill}, function() {
});
Разделение.val - это то, как я храню данные внутри входов, чтобы пользователь мог их видеть.
chrome.storage - это то, как я тогда беру данные и вызываю их позже в файле content_script s:
chrome.storage.sync.get(['autofiller'], function() {
});
checker = autofiller.split(",");
alert(checker[1], checker[2]);
и по какой-то причине каждый раз, когда запускается часть оповещения, независимо от того, какое это число, она всегда предупреждает все данные, не разделенные запятыми.
Что странно, потому что разделение отлично работает в другом файле, где я использую localStorage.
Я также отредактировал файл и попробовал это так:
chrome.storage.sync.set({
'info0': (filler[0])
'info1': (filler[1])
'info2': (filler[2])
'info3': (filler[3])
'info4': (filler[4])
'info5': (filler[5])
'info6': (filler[6])
'info7': (filler[7])
'info8': (filler[8])
'info9': (filler[9])
'info10': (filler[10])
'info11': (filler[11])
'info12': (filler[12])}, function() {
});
затем в файле content_script s пробовал это:
chrome.storage.sync.get(['info0', 'info1', 'info2', 'info3','info4','info5','info6','info7',
'info8', 'info9', 'info10', 'info11', 'info12'], function() {
});
alert(info0);
Я также попытался сделать метод set без () между наполнителями, и он также не работал. Кто-нибудь может мне помочь?
Любой совет, почему раскол не работает?
1 ответ
Есть большая разница между localStorage
а также chrome.sync
: первый синхронный, а chrome.sync асинхронный, что означает, что вам нужно использовать функцию обратного вызова для работы с полученными данными.
Это довольно интересный вопрос. Пожалуйста, проверьте ответы на этот вопрос: Как я могу вернуть ответ от асинхронного вызова?
В частности, в вашем случае вся обработка данных должна осуществляться внутри функции обратного вызова:
chrome.storage.sync.get(['autofiller'], function (result) {
const checker = result.autofiller.split(',');
alert(checker[1], checker[2]);
});