首页 文章

getimagedata无法在Firefox中运行

提问于
浏览
1

我遇到了HTML5元素getImageData()的问题我正在使用wScratchPad作为网站上的临时工具,并使用wScratchPad中的百分比函数来确定何时删除叠加层 . 它在IE9,Safari和Chrome上运行良好 . 但它在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

    是的,您的问题是页面和图像不是同源的 .

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

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

相关问题