簡體   English   中英

通過 LZString 壓縮 Base64 字符串會產生 SyntaxErrors

[英]Compressing Base64 string through LZString gives SyntaxErrors

https://pieroxy.net/blog/pages/lz-string/guide.html

我有一些 Base64 數據 url 字符串需要壓縮成較短的字符串。 我已經下載了 LZString 庫並嘗試使用Base64String.compress(base64)Base64String.decompress(compressedBase64)如上面的官方指南所示。

雖然數據 url 用於在離線頁面中顯示圖像,但頁面預計為壓縮大小,因此必須在離線頁面中解壓縮每個字符串。 這是一個簡化的代碼示例:

var compressed = Base64String.compress(dataUrl);
var script = document.createElement("script");
script.innerHTML = "var dataUrl = Base64String.decompress(" + compressed + ");";
offlineHtml.querySelector("body").appendChild(script);

但是,當我下載頁面並打開它時,它顯示了各種 forms 的 SyntaxErrors 發生,包括missing ) after argument list Invalid or unexpected token Unexpected identifiers 似乎字符串的壓縮方式會產生有問題的語法。 是否有任何解決方案或任何其他適合 base64 字符串壓縮的庫?

與其嘗試連接以創建包含有效 Javascript 語法的字符串,不如將壓縮字符串保存在static Javascript可以檢索和解析的其他位置。 您可以使用<script type="application/json"> ,或不可見的文本區域,或數據屬性:

const compressed = Base64String.compress(dataUrl);
const script = document.createElement("script");
script.dataset.compressed = compressed;
script.textContent = `
  var dataUrl = Base64String.decompress(document.currentScript.dataset.compressed);
`;
offlineHtml.querySelector("body").appendChild(script);

(或者,最好不要像這樣在內聯編寫 Javascript,而是將src附加到包含相同內容的腳本標簽)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM