2017-03-02 4 views
0

クロムからエッジに既存の拡張機能を移植していますが、chrome.storage.localの1MBの制限に問題があります。私はこのトピックの関数String length in bytes in JavaScriptを使用して文字列のサイズを調べ、json文字列が1mBを超える場合は "1mB以上"の例外をスローしますが、json文字列が250kBと1mBの間であれば、 .runtime.lastErrorは、データが1mBを超えていると、例外はスローされず、データは格納されません。Edge extendion chrome.storage.local 1MB制限

私はbrowser.storageに切り替えようとしましたが、私は同じ結果を得ています。これはバグですか、私が間違って使用しているバイトサイズ関数ですか?

また、lz-stringを使用してデータを圧縮してストレージを増やしています。

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)によると、マイクロソフトのエッジは、(Windowsの10クリエーターUpdateが起動したら、それは一般に公開されますが、Windowsのインサイダーに、現在のみ利用可能)でunlimitedStorage許可が14986を構築し、上記のサポート。これを使用すると、1MBのサイズ制限を回避できるはずですが、Edgeのネームスペースがbrowserであるため、上記コードをbrowser.storage.local

に変更する必要があります.Windows Insiderプレビュープログラムにサインアップする必要がある場合は、ここに:https://insider.windows.com