2014-11-04 57 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

相關問題