在IE9中使用jQuery和jDataView读取二进制文件
Read binary in IE9 with jQuery and jDataView
我试图读取二进制与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
}
});
对于返回二进制流的服务器,我添加了标题:
<?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使用本地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);
// ...
}
};
相关文章:
- 从桌面读取python文件时高亮显示代码
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- NodeJS-readline暂停和恢复事件发射器(逐行读取)
- 未捕获的类型错误:无法读取属性'删除'的未定义
- AngularJS指令出错-无法读取属性'编译'的未定义
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 如何在Javascript中读取unsigned int
- 如何读取表单中的输入数据
- 通过传递图像的URL通过javascript读取/处理图像-类似于PHP中的file_get_contents
- 看到“;未捕获的类型错误:无法读取属性'weight'未定义的“;尽管按照字面上的指示
- angularjs无法读取未定义的属性then
- 正在读取JSON,数据未显示
- 在IE9中使用jQuery和jDataView读取二进制文件