通过 LZ 字符串压缩 Base64 字符串会出现语法错误
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);
但是,当我下载页面并打开它时,它显示出现了各种形式的语法错误,包括missing ) after argument list
Invalid or unexpected token
Unexpected identifiers
。字符串的压缩方式似乎会产生有问题的语法。是否有任何解决方案或任何其他适合 base64 字符串压缩的库?
与其尝试连接以创建包含有效 Javascript 语法的字符串,不如将压缩后的字符串保存在 else 的某处 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
附加到包含相同内容的脚本标签)
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);
但是,当我下载页面并打开它时,它显示出现了各种形式的语法错误,包括missing ) after argument list
Invalid or unexpected token
Unexpected identifiers
。字符串的压缩方式似乎会产生有问题的语法。是否有任何解决方案或任何其他适合 base64 字符串压缩的库?
与其尝试连接以创建包含有效 Javascript 语法的字符串,不如将压缩后的字符串保存在 else 的某处 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
附加到包含相同内容的脚本标签)