[英]How to pass an array from background.js to inject.js (content) script (Chrome Extension)
[英]Compress large JSON/JS object from content script to background.js - chrome extension
我想將一個大型JSON / JS對象從content.js發送到background.js
我嘗試了庫lz-string
來壓縮對象。
content.js
var compressedJSON = LZString.compress(JSON.stringify(largeObject));
chrome.runtime.sendMessage({type: "type1", result: compressedJSON}, function(response){
// handle response
});
background.js
var uncompressedJSON = JSON.parse(LZString.decompress(request.result));
這樣做,background.js中的uncompressedJSON
為null
但是,如果我使用LZString.decompress()
在content.js中解壓縮相同的字符串compressedJSON
,它就可以工作!
我想知道UTF編碼是否與此有關。 該庫似乎工作得很好,因為我能夠將對象壓縮約78%。
也歡迎其他圖書館提出建議!
使用LZString.compressToUTF16
和LZString.decompressFromUTF16
:
從所有瀏覽器都可以安全存儲的意義上來說,compressToUTF16會生成“有效的” UTF-16字符串。 因此它們可以存儲在所有經過測試的瀏覽器(IE9-10,Firefox,Android,Chrome,Safari)上的localStorage中。 可以使用decompressFromUTF16解壓縮。 每個字符僅使用15位存儲空間即可工作。 因此,產生的琴弦比通過壓縮產生的琴弦大6.66%
但是,以32MB的字符串塊(以及塊號)發送未壓縮的JSON.stringify結果,然后將它們組合到后台腳本中,仍然要快得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.