Javascript getImageData.data在IE11中未定义

Javascript getImageData.data在IE11中未定义,javascript,html,canvas,Javascript,Html,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.wid

我使用以下函数获取单击坐标的像素数据:

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 255

IE11:未定义未定义

更新:

我已经准备好了一个小提琴重奏,很抱歉我花了这么长时间才回到这里

经过一番周折后,我发现了一些奇怪的地方,画布上看似单一的像素返回rgba像素数据,如下所示:


经过几个小时的混乱、阅读和测试,我发现我必须
parseInt()来确保x和y值是整数,因为Internet Explorer 10和更高版本以浮点形式返回鼠标坐标以表示分数像素

以下是工作示例:


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

在你的对象
gObj
中如何创建
ImgData
?据介绍,中不支持
ImageData()构造函数IE@both_previous_commenter,如果OP使用的是空的ImageData(通过
ImageData
构造函数,或通过
ctx.createImageData
,他将不会有红色像素(
[255,0,0255]
)你的画布上画了什么?你能提供一个活生生的例子吗?@kaido你能描述一下你的意思吗?它在我的IE11中工作。RGBA值仅在图像区域可用。其他画布区域仅显示未定义,即使在Chrome中也是如此。