我对 JavaScript 还很陌生。我目前正在研究一种在 Java 中 deflate 并在 javascript 中 inflate 的算法。在大多数情况下,我听说 pako.js 是一个很好的解压工具,但我在实现它时遇到了问题。我在 JavaScript 中创建了一个函数,它将 base64 字符串作为参数传递。
function decompressHtml(html){
var compressedData = atob(html);
var charData = compressedData.split('').map(function(x){return x.charCodeAt(0);});
var binData = new Uint8Array(charData);
var inflated = '';
try {
inflated = pako.inflate(binData);
} catch (err) {
console.log(err);
}
return inflated;
}
它总是返回一个错误,指出 pako 没有正确定义。是否需要插入特定的脚本标签才能定义 pako?我意识到这可能是一个简单的问题,但我不确定答案。
将下载的文件包含在您的 html 中,如下所示:
<script type="text/javascript" src="pako.js"></script>
示例代码:
var input = "test string";
var output = pako.gzip(input,{ to: 'string' });
alert("compressed gzip string - " + output);
var originalInput = pako.ungzip(output,{ to: 'string' });
alert("uncompressed string - " + originalInput);
这会对你有帮助
解压
const input = new Uint8Array(res);
const restored = JSON.parse(pako.inflate(input, { to: 'string'}));
console.log(restored)
压缩
const input = new Uint8Array(res);
const output = pako.deflate(input);
console.log(output)
Pako 期望绑定到名为
global
的对象,该对象(从 Chrome 118 开始)在浏览器中未定义。您可以创建 global
对象,并通过将其放入脚本中 Pako 脚本标记之前的某个位置来让 Pako 满意。
if (!window.global) window.global = window;