gpt4 book ai didi

javascript - 使用 jQuery 和 jDataView 在 IE9 中读取二进制文件

转载 作者:行者123 更新时间:2023-11-30 18:01:35 24 4
gpt4 key购买 nike

我正在尝试使用 jDataView 读取二进制文件在 2 个浏览器上:Chrome 和 IE9。

我在 ajax 请求之前添加了新类型 binary(使用 jQuery 1.10.0):

// Install binary dataType
jQuery.ajaxSetup({
accepts: {
binary: "text/plain; charset=x-user-defined"
},
contents: {

},
converters: {
"text binary": true // Nothing to convert
}
});

对于返回二进制流的服务器,我添加了 header :

<?php header("Content-type: text/html; charset=windows-1251"); ?>

然后ajax请求:

$.support.cors = true;
$.ajax({
type: 'GET',
url: url,
dataType: 'binary',
mimeType: 'text/plain; charset=x-user-defined',
success: function(data) {
var view = new jDataView(data);
// ...
}
});

我正在使用方法 getUint8() 获取二进制流的一部分:

for (var l = 0; l < 8; l++) {
tx += " " + view.getUint8(l, true);
}

然后,比较 tx 字符串:

0 0 0 7 12 106 212 65 (chrome) => GOOD (match the expected results)
0 0 2 94 12 106 36 65 (IE9) => 3 BAD sequences

在 Chrome 上它工作得很好,但我在 IE9 上没有相同的结果...Chrome 使用 native getUint8 函数,而 IE9 使用 jDataView 方法。

最佳答案

最后我找到了这个 hack 的解决方案和 jDataView:

var oReq = new XMLHttpRequest();
oReq.open("GET", url, true);
oReq.responseType = "arraybuffer";

if (oReq.overrideMimeType) {
oReq.overrideMimeType('text/plain; charset=x-user-defined');
} else {
oReq.setRequestHeader('Accept-Charset', 'x-user-defined');
}

oReq.onload = function(oEvent) {
if (oReq.status == 200) {
var arrayBuffer = oReq.response;
var view = new Uint8Array(arrayBuffer);
var dataView = new jDataView(view.buffer);
// ...
}
};

关于javascript - 使用 jQuery 和 jDataView 在 IE9 中读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com