область переменной локального хранилища для каждой вкладки в расширениях google chrome

Я хотел хранить переменные для каждой вкладки. Этот же вопрос уже поднимался, и было предложено использовать localStorage. Но как использовать localstorage для сохранения ассоциативных массивов.

Например. Пользователь авторизуется на сайте. я хочу создать переменную для ссылки на этого пользователя. таким образом, использование откроет много вкладок, и он войдет на многие сайты. поэтому мне нужно сохранить доменное имя и ссылку на пользователя в локальном хранилище. поэтому, если я использую имя пользователя как уникальное поле, я могу поддерживать ассоциацию со ссылкой на имя пользователя, и, наконец, мне нужно будет хранить эту информацию в базе данных.

Итак, как поддерживать структуру данных в расширении Google Chrome. Это всего лишь пример, но это может быть любой случай, когда нам нужно одно и то же имя переменной на разных вкладках с разными значениями.

В документации указано, что нужно использовать формат json. Но все же я хочу, чтобы пользователи предложили по этому поводу.

поэтому любой ответ будет полезен, например, ответы, предложения, ссылки и комментарии.


person Jayapal Chandran    schedule 05.07.2011    source источник


Ответы (1)


Из вашего вопроса не очень понятно, что вы подразумеваете под «областью вкладок».

Если вам действительно нужна область вкладки, то есть хранить значения для этой конкретной вкладки, даже когда пользователь переходит на новый сайт, вы можете использовать tabid в качестве ключа (только идентификатор вкладки не сохраняется между перезапусками браузера).

Если вы на самом деле имеете в виду «область домена», то она предоставляется «бесплатно» со сценариями содержимого. Если вы используете localStorage внутри скрипта контента, он сохранит значение только для этого домена. Вам нужно только убедиться, что ваши ключи не конфликтуют с ключами потенциального сайта, поскольку сайт может использовать один и тот же localStorage.

Если вы просто спрашиваете, как создать структуру данных, в которой в качестве ключей будут использоваться доменные имена, то это может быть что-то вроде этого:

var data = {};
data["google.com"] = {
    username: "user1",
    password: "pass1"
};
data["yahoo.com"] = {
    username: "user2",
    password: "pass2"
};

//store it
localStorage["data"] = JSON.stringify(data);

//load
data = JSON.parse(localStorage["data"]);

//read google username
console.log(data["google.com"].username);
person serg    schedule 05.07.2011
comment
Да. это оно. Я собирался сделать это, но вы сэкономили час или больше времени, предотвратив пробы и ошибки. благодарю вас. - person Jayapal Chandran; 06.07.2011
comment
Использование словаря в фоновом сценарии с tabIds в качестве ключей, а затем совместное использование этого расширения было правильным решением для меня. Спасибо за предложение - person nemesisfixx; 09.06.2015