getimagedata无法在Firefox中运行

时间:2012-12-03 17:58:42

标签: javascript jquery html5 firefox canvas

我遇到了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;
},

1 个答案:

答案 0 :(得分:0)

是的,您的问题是页面和图片不是同源的。

修复它的方法是从www.domain.com加载页面,就像图像一样,或让服务器使用图像发送相应的CORS标题。

我很惊讶你说它适用于其他浏览器。您是否可以从www.domain.com加载页面?