在Safari 9.1.2中,JavaScript ArrayBuffer切片显然已被破坏

时间:2016-08-24 17:04:08

标签: javascript safari

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

1 个答案:

答案 0 :(得分:4)

我只是把它写成答案,所有相关的事实已经在评论中(因此社区维基)。

您在.slice()对象上呼叫Uint8Array,而不是ArrayBuffer.slice() is not supported on typed arrays in Safari and 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;
    }
}