IE11中未定义getImageData.data

时间:2016-12-12 04:28:39

标签: javascript html5 canvas

我使用以下功能获取点击坐标的像素数据:

Utils.GetPixel = function(imgData, index)
{
    var i = index*4, d = imgData.data;
    return [d[i], d[i+1], d[i+2], d[i+3]];
};

Utils.GetPixelXY = function(gObj, x, y)
{
    return Utils.GetPixel(gObj.ImgData, y*gObj.ImgData.width+x);
};

在Chrome / Firefox / Edge中打印出一些测试数据工作正常,但在IE11中没有,我对此非常陌生,所以我有点困惑。

var p = Utils.GetPixelXY(gObj, (mx - gObj.X), (my - gObj.Y));
console.log(p[0]+" "+p[1]+" "+p[2]+" "+p[3]);

Chrome / Firefox / Edge: 255 0 0 255

IE11: undefined undefined undefined undefined

更新:

我把一个小提琴复制品放在一起,对不起,我花了这么长时间才回到这里。

https://jsfiddle.net/1wwtxrjp/3/

经过一番乱搞之后,我发现了一些特殊的东西,画布上看似单个的像素返回了rgba像素数据,如下所示:

What on earth? o.0

What on earth2? o.0

1 个答案:

答案 0 :(得分:0)

经过几个小时的完全混乱,阅读和测试我发现我必须parseInt() to ensure that the x and y values are integers because Internet Explorer 10 and later return mouse coordinates as floats to represent fractional pixels

以下是工作示例:https://jsfiddle.net/1wwtxrjp/4/

我真的很惊讶stackoverflow上没有人指出这一点,我花了很长时间才找到答案,我想很多人都犯了这个错误。