【发布时间】:2012-07-02 08:08:41
【问题描述】:
这个问题是 this StackOverflow question about IE 对 Opera 12 浏览器的扩展。
根本问题是issue in geoxml3 处理 kmz(压缩的 kml)文件。
Example that fails in Opera 12
二进制数据正在使用 modified version of ZipFile.complete.js 中的 TypedArrays 进行处理
传输二进制文件后,Opera 12 中的 Uint8Array 没有正确填充,就好像数据被导入为 16 位元素一样。
请求是这样配置的:
this.req.responseType = 'arraybuffer';
this.req.overrideMimeType('text/plain; charset=x-user-defined');
返回的值是这样处理的:
var fileContents = binStream.req.response;
binStream.length = fileContents.byteLength;
binStream.array = new Uint8Array(fileContents);
前八个字节在 Opera 12 中是这样填充的:
0x004B0050;给出十进制值 4915280
但应该是:
0x4034B50;十进制值为 67324752。
这在 Firefox、Chrome 和 IE 中可以正常工作(有解决方法)。
有谁知道我如何说服 Opera 12 正确填充 Uint8Array?或者一种解决方法,以便它可以工作(某种方式将 16 位字节数组转换为 8 位字节数组,尽可能有效地丢弃不需要的高 8 位)?这是最近在 Opera 12 中实现 TypedArray/XmlHttpRequest 的已知错误吗?
【问题讨论】:
标签: javascript xmlhttprequest opera xmlhttprequest-level2