2011-07-05 3 views
0

탭 범위 당 변수를 저장하고 싶었습니다. 이 같은 질문은 이미 제기되었고 localstorage를 사용하는 것이 좋습니다. 그러나 연관 배열을 저장하기 위해 localstorage를 사용하는 방법.Google 크롬 확장의 탭 당 로컬 저장소 변수 범위

예를 들면. 사용자가 사이트에 로그인하고 있습니다. 그 사용자를 참조하는 변수를 만들고 싶습니다. 이렇게 사용하면 많은 탭이 열리 며 많은 사이트에 로그인하게됩니다. 그래서 localstorage에서 도메인 이름과 사용자 참조를 유지해야합니다. 그래서 고유 한 필드로 사용자 이름을 사용하면 사용자 이름에 대한 참조와의 연관성을 유지할 수 있고 마침내이 정보를 데이터베이스에 저장해야합니다.

그래서 Google 크롬 확장에서 데이터 구조를 유지 관리하는 방법. 위의 예는 단지 하나의 예일 뿐이지 만 다른 값을 가진 여러 탭에서 동일한 변수 이름이 필요한 모든 경우 일 수 있습니다.

설명서에 json 형식을 사용한다고 명시되어 있습니다. 하지만 여전히 나는 이것에 대한 사용자의 제안을 원한다.

그래서 모든 종류의 응답은 답변, 제안, 참조 및 의견과 같이 유용합니다.

답변

2

질문에서 "탭 범위"가 무엇을 의미하는지 명확하지 않습니다.

사용자가 새 사이트로 이동할 때도이 특정 탭의 값을 저장 한 다음 tabid를 키로 사용할 수 있습니다 (브라우저 재시작간에 탭 ID 만 유지되지 않음).

"도메인 범위"를 실제로 의미하는 경우 콘텐츠 스크립트로 "무료"로 제공됩니다. 콘텐츠 스크립트 내에 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); 
+0

예. 이거 야. 나는이 일을하려고했으나 시련과 실수를하지 않게함으로써 한 시간이나 그 이상을 구 했습니 다. 고맙습니다. –

+1

배경 스크립트에서 사전을 사용하여 tabIds를 키로 사용하고 확장 프로그램에서이를 공유하면 적절한 솔루션이되었습니다. 제안 해 주셔서 감사합니다. – nemesisfixx

관련 문제