Safari 9.1.2 (10601.7.7) 中的基本 JavaScript 功能似乎被破坏。也许我只是做错了什么?正在寻找有关如何度过这一切的建议......
有问题的函数是ArrayBuffer.prototype.slice()
下面是一个在 Chrome 和 Firefox 中运行良好的使用示例,但在 Safari 中则不行。
var buffer = new ArrayBuffer(16);
var bufferView = new Uint8Array(buffer);
console.log(bufferView.slice(0,8)); // TypeError: bufferView.slice is not a function
Run Code Online (Sandbox Code Playgroud)
我只是把这个写出来作为答案,所有相关的事实都已经在评论中了(因此是社区维基)。
您正在调用.slice()对象Uint8Array,而不是ArrayBuffer,并且.slice()Safari 和 Internet Explorer 中的类型化数组不支持。
相反,您可以使用bufferView.buffer.slice(), 或 Patch 编写的这个辅助方法:
if(!Uint8Array.prototype.slice)
{
Uint8Array.prototype.slice = function(a,b){
var Uint8ArraySlice = new Uint8Array(this.buffer.slice(a,b));
return Uint8ArraySlice;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2211 次 |
| 最近记录: |