2014-11-04 381 views
3

嘿,我试图实现一个名为backgroundcheck的jquery插件,它给了我控制台日志错误: “Uncaught SecurityError:未能在'CanvasRenderingContext2D'上执行'getImageData':画布已被交叉源数据污染。”我已经完成了他说的在说明中所做的一切,但它不起作用。任何帮助将不胜感激。控制台日志:未捕获SecurityError:未能在CanvasRenderingContext2D上执行'getImageData':画布已被交叉源数据污染

UPDATE:

这些都是在下拉菜单中的主要误差下的三个错误。

calculatePixelBrightness VM682 background-check.min.js:571 
processTargets VM682 background-check.min.js:631 
check VM682 background-check.min.js:766 

下面是它的一个screenshot

+0

为什么你的链接到'foo.com'? – 2014-11-04 23:59:49

+0

哎呀,抱歉,修正了这个问题 – 2014-11-05 00:01:28

+0

您能否包含一些您用来获取错误的代码?查看github自述文件的位置并不明显。 – 2014-11-05 00:03:04

回答

4

jsFiddle Demo

错误是图像的结果而位于不同的域。对此,有一个令人惊讶的简单补救措施,即将图像元素本身添加属性crossDomain = "anonymous"

例如,

<img src="http://i.imgur.com/UnnoYbv.jpg" crossOrigin="anonymous" draggable="false" /> 
+1

这没有奏效。我只使用本地图像!这是奇怪的事情。请看更新。非常感谢你的帮助! – 2014-11-05 01:18:06

-1

这个问题似乎重复:

Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data

的解决方案可能是一样的。当您使用从磁盘加载HTML文件:file://path/to/your/file.html,那么谷歌Chrome和Opera将在行引发错误包括:imgData = ctx.getImageData(x1,y1,w,h);

解决方法很简单:启动Web服务器(Apache时,Nginx的)把你的html文件的地方在web服务器和加载你的html文件:http://localhost/somewhere/file.html

相关问题