당신은 정상은 재시작 확장에이 방법을 어떤 SDK 모듈을 가져올 수 있습니다. IndexedDB
과 같은 대체물이 있습니다. can be used from chrome
/add-on code 매우 쉽게.
당신은 또한 추가 기능 (SDK를 simple-storage
API를 사용할 필요가 없습니다)에 localStorage
를 사용할 수 있지만이 부가 기능 공유 할 것이기 때문에 오버레이에 window.localStorage
를 사용해서는 안되며, bootstrap.js
에 window.localStorage
을 사용할 수 없습니다 및/또는 js 코드 모듈은 단순히 window
이 아니기 때문에 가능합니다. 하지만 저장 개체를 직접 만들 수 있습니다.
function getStorage(uri) {
if (!(uri instanceof Ci.nsIURI)) {
uri = Services.io.newURI(uri, null, null);
}
let principal = Cc["@mozilla.org/scriptsecuritymanager;1"].
getService(Ci.nsIScriptSecurityManager).
getNoAppCodebasePrincipal(uri);
let dsm = Cc["@mozilla.org/dom/localStorage-manager;1"].
getService(Ci.nsIDOMStorageManager);
return dsm.createStorage(principal, "");
}
var s1 = getStorage("chrome://my-addon/content/whatever.xul"); // does not actually have to point to a resource.
일반적으로 localStorage
의 제한 사항이 적용됩니다 (할당량 등).
동의어 :이 코드에서는 localStorage
개의 웹 사이트 (예 : getStorage("http://stackoverflow.com/");
. (내선 이름, 예를 들어 앞에 추가 모든 키 이름)
const ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
ss.setGlobalValue("my-extension-few-strings", "blah blah blah");
const fewStrings = ss.getGlobalValue("my-extension-few-strings");
// fewStrings === "blah blah blah";
ss.deleteGlobalValue("my-extension-few-strings");
세션 저장소가 모든 확장에서 공유되므로 저장된 값에 대한 고유 한 이름을 선택합니다
단순 저장 API는 addon-sdk로 재시작없는 추가 기능을 개발할 때 잘 작동합니다. 예제를 사용해 보셨습니까? 그들은 실패하거나 당신에게 오류를 줄 수 있습니까? – Kapep
그게 핵심입니다. addon-sdk를 사용하고 있지 않습니다. 나는 많은 외부 dll 함수로 작업하기 때문에'bootstrap.js'에서 네이티브 코드를 사용하고 있습니다. –
곧 addon-sdk로 현재 확장을 옮기려고 노력할 것입니다.하지만 그때까지는 수정이 필요합니다. –