Javascript getimagedata在firefox中不工作

Javascript getimagedata在firefox中不工作,javascript,jquery,html,firefox,canvas,Javascript,Jquery,Html,Firefox,Canvas,我对HTML5元素getImageData有问题 我在网站上使用wScratchPad作为抓取工具,并使用wScratchPad中的百分比函数来确定何时删除覆盖。它在IE9、Safari和Chrome上运行良好。但它在Firefox中抛出了一个安全错误 我在Chrome和IE9中也遇到了同样的问题,但通过将JS、图像和HTML移动到同一个服务器来解决了这个问题 我知道如果JS和Canvas图像的域不在同一个域上,它会抛出一个错误,所以我检查了图像和JS的document.domain。它看起来像

我对HTML5元素getImageData有问题 我在网站上使用wScratchPad作为抓取工具,并使用wScratchPad中的百分比函数来确定何时删除覆盖。它在IE9、Safari和Chrome上运行良好。但它在Firefox中抛出了一个安全错误

我在Chrome和IE9中也遇到了同样的问题,但通过将JS、图像和HTML移动到同一个服务器来解决了这个问题

我知道如果JS和Canvas图像的域不在同一个域上,它会抛出一个错误,所以我检查了图像和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;
},

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

解决方法是从www.domain.com加载页面,就像图像一样,或者让服务器随图像发送相应的CORS头


我很惊讶你说它可以在其他浏览器中使用。您可能从www.domain.com加载了这些页面吗?

我想这就是您要查找的:不幸的是,它在控制台中抛出并出错,无助于解决Firefox中的问题是,我通过www.domain加载了页面,但如果我检查document.domain,它是“domain.com”,则图像和页面位于同一服务器和域上,与页面不同的是,图像的document.domain有“www.domain.com”而不是“domain.com”itself@user1873378哦您的脚本是否将document.domain设置为domain.com?您正在测试Firefox的哪个版本?Firefox 18和以后将忽略DeaveMeGe安全检查的文档。但是旧版本会考虑它…