Хранить массив в расширении Chrome - PullRequest
0 голосов
/ 19 декабря 2011

В настоящее время я делаю расширение для Chrome, и я нахожусь на последнем этапе, сохраняя настройки пользователей.
Я знаю, что Local Storage будет хранить строки, и на этом этапе я просто удивляюсь толькоиспользуя строки, но по мере увеличения требований к хранилищу требуется двухмерный массив.Я видел, что Local Storage не способен хранить массив, но вы можете использовать JSON.Я никогда не использовал JSON, и, глядя на примеры, я не понимаю, как это сделать.

for (i=1;i<=localStorage["totalwebsites"];i++) {
        // Get the title of the current item
        var title = localStorage["websitetitle" + i];
        // Create the new context menu item, and get its menuItemId to store in the right localStorage string
        var menuItemId = chrome.contextMenus.create({parentId: ParentID, title: title, contexts:["selection"], onclick: searchFromContext});
        // Store the created menu items menuItemId in the array so we know which item was chosen later on
        websitesarray[menuItemId] = localStorage["websiteurl" + i];
    }

Как вы можете видеть, это очень запутанно, очень быстро при использовании строк.Я надеялся, что totalwebsites станут подсчетом элементов в массиве, а websitetitle и websiteurl будут в димерном массиве 2.
Я не понимаю, как бы вы сделали это в JSON или, по крайней мере, как это могло быпостоянно храниться в самом Chrome.Я предполагаю, что вам придется преобразовать его обратно в строки локального хранилища в какой-то момент или что-то?Я не думаю, что получаю это.
Любая помощь / указатели были бы очень признательны, я не могу найти много: (

1 Ответ

4 голосов
/ 19 декабря 2011

Не волнуйтесь, JSON супер просто!Предполагая, что ваши сайты хранятся в websitesarray:

// To load:
websitesarray = JSON.parse(localstorage.websites);

// To store:
localstorage.websites = JSON.stringify(websitesarray);

Убедитесь, что у вас есть здравый способ справиться со случаем, когда localstorage.websites еще не установлен, так как JSON.parse подойдет, еслиего вход пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...