2016-08-24 9 views
2

Safari 9.1.2(10601.7.7)では、基本的なJavaScript関数が壊れているようです。多分私は何か間違っているのでしょうか?関数が質問にJavaScript Safari 9.1.2で明らかにArrayBufferスライスが壊れていた

...この過去の作品方法についてのアドバイスをお探しすることはここでArrayBuffer.prototype.slice()

であるSafariでChromeとFirefoxで正常に動作しますが、ない使用例です。

var buffer = new ArrayBuffer(16); 
var bufferView = new Uint8Array(buffer); 
console.log(bufferView.slice(0,8)); // TypeError: bufferView.slice is not a function 
+0

どのような意味では、それは動作しません。

代わりに、あなたはbufferView.buffer.slice()、またはパッチによって書かれた、このヘルパーメソッドを使用できますか?エラーはありますか?何か変わったことが起こりますか? – Pointy

+0

「壊れている」ということはどういう意味ですか?エラーが発生していますか?それはあなたに間違った選択を与えていますか? –

+0

@Pointyを実行すると、SafariのWebインスペクタで次のように伝えられます。TypeError:bufferView.sliceは関数ではありません。 – Patch

答えて

3

私はちょうど答えとしてこれを書いています。すべての関連する事実はすでにコメントになっています(したがってコミュニティwiki)。

.slice()は、Uint8Arrayオブジェクトであり、ArrayBufferではなく、.slice() is not supported on typed arrays in Safari and Internet Explorerではありません。

if(!Uint8Array.prototype.slice) 
{ 
    Uint8Array.prototype.slice = function(a,b){ 
     var Uint8ArraySlice = new Uint8Array(this.buffer.slice(a,b)); 
     return Uint8ArraySlice; 
    } 
} 
関連する問題