Chrome:
> var e = document.createElement('canvas').getContext('2d').createImageData(10, 10).data;
undefined
> Object.prototype.toString.call(e)
"[object ImageData]"
> e.slice
undefined
FX4:
>>> var e = document.createElement('canvas').getContext('2d').createImageData(10, 10).data;
undefined
>>> Object.prototype.toString.call(e)
"[object Uint8ClampedArray]"
>>> e.slice
slice()
Opera:
>>> var e = document.createElement('canvas').getContext('2d').createImageData(10, 10).data;
undefined
>>> Object.prototype.toString.call(e)
"[object CanvasPixelArray]"
>>> e.slice
undefined
Это нам что говорит? Ну, спецификация нигде не гласит , что массив данных пикселей должен иметь методы, подобные массиву.
Ergo, используйте .slice
, только если доступно, в противном случае сделайте for loop
копию, а также протестируйте более чем в 2 браузерах.