Ошибка разделения синхронизации хранилища Chrome - PullRequest
0 голосов
/ 26 августа 2018

Здравствуйте. В настоящее время я создаю расширение для 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 split - это то, как я храню данные во входах, чтобы пользователь мог их видеть.

chrome.storage - это то, как я затем беру данные и вызываю их позже в файле content_scripts:

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_scripts пробовал это:

chrome.storage.sync.get(['info0', 'info1', 'info2', 'info3','info4','info5','info6','info7', 
    'info8', 'info9', 'info10', 'info11', 'info12'], function() {
});


alert(info0);

Я также пытался выполнить метод set без () между наполнителями, и он также не работал. Кто-нибудь может мне помочь, пожалуйста?

Какой-нибудь совет, почему разделение не работает?

1 Ответ

0 голосов
/ 27 августа 2018

Существует большая разница между localStorage и chrome.sync: первый синхронный , а chrome.sync асинхронный , что означает, что вы должны использовать обратный вызовфункция для работы с полученными данными.

Это довольно-таки новичок.Пожалуйста, проверьте ответы на этот вопрос: Как я могу вернуть ответ от асинхронного вызова?

В вашем конкретном случае вся обработка данных должна осуществляться внутри функции обратного вызова:

chrome.storage.sync.get(['autofiller'], function (result) {
    const checker = result.autofiller.split(',');
    alert(checker[1], checker[2]);
});
...