2

我正在尝试使用来自 http://jsxgraph.uni-bayreuth.de/wp/jsxcompressor/的 jsxcompressor

但在我做任何事情之前,我遇到了问题:

未捕获的类型错误:无法读取未定义的属性“0”

我的简单示例代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="/jsxcompressor.js" type="text/javascript"></script>
    <script type="text/javascript">
        document.write(JXG.decompress("test")); 
    </script>
</head>
<body></body>
</html>

我知道“test”并不完全是一个压缩字符串,只是把它放在那里进行测试。

来自 chrome js 控制台的错误是这样的: chrome js控制台错误信息

任何人都可以帮我解决这个问题吗?非常感谢!

4

2 回答 2

3

JXG.decompress 必须使用 base64 编码的压缩字符串。试试这个:

document.write(JXG.decompress("eNrzSM3JyVc1clY1MijPL8pJUTVwBAA8CgXU")); 

目前,必须以等于 9 的压缩强度调用 gzip。获取压缩字符串的 PHP 代码如下所示:

base64_encode(gzcompress(rawurlencode(file_get_contents($filename)),9));

在 Python 中,它看起来像这样:

base64.b64encode(zlib.compress(urllib.quote(text), 9))
于 2013-02-21T17:18:49.147 回答
0

给出的答案是正确的,尽管我想使用 zlib for node.js 贡献我的发现。

在使用 zlib.deflate 发送我的套接字消息时,我遇到了同样的错误,即使字符串是 base64 编码的。显然 deflate 方法将一些 zlib 标头添加到压缩字符串中。相反,使用 zlib.gzip 压缩服务器上的数据,jsxCompress 可以正常工作。

于 2015-06-16T21:46:50.750 回答