如何在IE9中读取二进制数据
How to read binary data in IE9?
我正在研究一些Javascript代码,它使用Photoshop嵌入的路径创建图像的alpha蒙版。IMG 标签的加载处理程序将调用剪辑(this)。该函数加载图像的源文件并对其进行扫描。这是设置:
function clip(img) {
var xhr = new XMLHttpRequest();
xhr.open('GET', img.src, true);
xhr.responseType = 'arraybuffer';
xhr.target = img;
xhr.onload = function(e) {
var bytes = new Uint8Array(this.response);
var p = findPhotoshopSegment(bytes);
if(p) {
var paths = parse8BIMData(bytes, p);
/* ... replaces IMG with SVG tag ... */
}
};
xhr.send();
}
您可以在 http://flaczki.net46.net/JPEG/SVG.html 中看到代码的运行
情况目前,它仅适用于Firefox,Chrome和Safari。它在IE9中不起作用。浏览器支持 SVG,但不支持 Uint8Array。有没有某种解决方法?
我在玩pdf.js库时遇到了同样的问题,我发现的解决方案是制作我自己的Uint8Array,下面是您需要的代码。所有功劳都归 notmasteryet 所有@github完整的代码可以在这里找到 https://gist.github.com/1057924
(function() {
try {
var a = new Uint8Array(1);
return; //no need
} catch(e) { }
function subarray(start, end) {
return this.slice(start, end);
}
function set_(array, offset) {
if (arguments.length < 2) offset = 0;
for (var i = 0, n = array.length; i < n; ++i, ++offset)
this[offset] = array[i] & 0xFF;
}
// we need typed arrays
function TypedArray(arg1) {
var result;
if (typeof arg1 === "number") {
result = new Array(arg1);
for (var i = 0; i < arg1; ++i)
result[i] = 0;
} else
result = arg1.slice(0);
result.subarray = subarray;
result.buffer = result;
result.byteLength = result.length;
result.set = set_;
if (typeof arg1 === "object" && arg1.buffer)
result.buffer = arg1.buffer;
return result;
}
window.Uint8Array = TypedArray;
window.Uint32Array = TypedArray;
window.Int32Array = TypedArray;
})();
如果您想确保获得更广泛的兼容性,您还可以使用"web"目录下的PDF.js发行版中包含的兼容性.js文件。从Mozilla Github获取PDF.js,解压缩zip存档,并从上述目录中包含兼容性.js文件。它还使PDF.js库在例如IE9中工作
相关文章:
- 使用JavaScript从二进制文件中读取字节,而不使用jQuery
- 使用 node.js 从 Google 云端硬盘读取二进制文件
- 使用 JQuery 读取二进制文件的浏览器之间的不同行为
- 如何在IE9中读取二进制数据
- 如何使用JavaScript在Internet Explorer中将文件(DOCX或XLSX或PNG)读取为二进制流
- 读取 JavaScript 中包含 32 位浮点数的二进制文件
- 从Javascript(多浏览器)读取二进制文件
- 打开并读取二进制文件(JavaScript)
- 我可以通过XDomainRequest正确读取二进制数据吗
- 如何使用FileReader读取二进制文件,以便在CryptoJS中使用SHA-256进行哈希
- 如何使用XMLHttpRequest正确读取二进制浮点数据
- 在JavaScript中逐步读取二进制文件
- 读取二进制文件并从中生成字符串
- 在IE9中使用jQuery和jDataView读取二进制文件
- 用Karma-Jasmine读取二进制文件
- 如何读取二进制文件字节字节使用javascript
- 函数读取二进制文件使用v8
- 如何在 javascript 中打开和读取二进制流中的 PDF
- 读取二进制文件从服务器和赞扬它在javascript
- 读取二进制文件时出错