我遇到了HTML5元素getImageData()的问题 我正在使用wScratchPad作为网站上的临时工具,并使用wScratchPad中的百分比函数来确定何时删除叠加层。它在IE9,Safari和Linux上运行良好。铬。但它在Firefox中引发了安全错误。
我在Chrome和IE9中也遇到了同样的问题,但通过将JS,图像和HTML移动到同一台服务器来修复它。
我知道如果JS和Canvas Image的域不在同一个域上会引发错误,所以我检查了image和js的document.domain。它看起来像JS作为'document.domain = domain.com',图像有document.domain = www.domain.com。
这可能是问题吗?如果是这样,我该如何解决? 我已经看到了一种覆盖浏览器的方法来获取用户确认脚本的警报,但是看到这是一个高调的网站,这是不可能的。
在wScratchPad的代码下面导致错误:
scratchPercentage: function($this)
{
var hits = 0;
var imageData = $this.ctx.getImageData(0,0,$this.canvas.width,$this.canvas.height)
for(var i=0, ii=imageData.data.length; i<ii; i=i+4)
{
if(imageData.data[i] == 0 && imageData.data[i+1] == 0 && imageData.data[i+2] == 0 && imageData.data[i+3] == 0) hits++;
}
return (hits / $this.pixels) * 100;
},
答案 0 :(得分:0)
是的,您的问题是页面和图片不是同源的。
修复它的方法是从www.domain.com加载页面,就像图像一样,或让服务器使用图像发送相应的CORS标题。
我很惊讶你说它适用于其他浏览器。您是否可以从www.domain.com加载页面?