2017-03-02 740 views
0

將現有的擴展從chrome移植到邊緣,並且遇到chrome.storage.local的1mb限制問題。我使用了這個主題String length in bytes in JavaScript中的函數來查找字符串的大小,並發現如果json字符串超過1mB,它將拋出一個「超過1mB」的異常,但是如果json字符串在250kB和1mB之間,我會在chrome中得到一條消息.runtime.lastError表示數據超過1mB,不會拋出異常並且不存儲數據。邊緣擴展chrome.storage.local 1MB限制

我試着切換到browser.storage,但我得到了相同的結果。這是一個錯誤還是我使用的字節大小函數是錯誤的?

此外,我正在使用lz字符串來壓縮數據以嘗試增加我的存儲空間。

tmp = JSON.stringify(tmp); 
tmpAsString = LZString.compressToUTF16(tmp); 

var compresskey = 'compressedJSExtension'; 
try { 
    chrome.storage.local.set({[compresskey] : tmp }, function() { 
     if (chrome.runtime.lastError) console.error(chrome.runtime.lastError); 
    }); 
} 
catch (f) {  
    //Handle if the string is over 1mB 

} 

回答

2

按照擴展API路線圖(https://docs.microsoft.com/en-us/microsoft-edge/extensions/api-support/extension-api-roadmap),微軟邊緣支持unlimitedStorage許可,建立14986及以上(目前僅可用於Windows業內人士介紹,雖然這將是可公開一次在Windows 10創作者更新推出) 。使用這應該讓你周圍的1MB大小的限制,但由於邊緣的命名空間是browser,你必須在上面的代碼更改爲browser.storage.local

如果您需要註冊爲Windows內幕預覽程序,你可以做所以在這裏:https://insider.windows.com