2012-12-03 12 views
1

HTML5 요소에 문제가 있습니다. 웹 사이트의 스크래치 도구에 wScratchPad를 사용하고 wScratchPad의 백분율 함수를 사용하여 오버레이를 제거 할시기를 결정했습니다. IE9, Safoor & 크롬에서 정상적으로 작동합니다. 하지만 Firefox에서는 보안 오류가 발생합니다.Firefox에서 getimagedata가 작동하지 않습니다.

크롬과 IE9에서도 동일한 문제가 있었지만 JS, 이미지 및 HTML을 동일한 서버로 옮겨서 문제를 해결했습니다.

JS와 Canvas 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

나는 이것이 당신이 찾고있는 것 같아요 : http://stackoverflow.com/a/366493/1438733 – Eric

+0

불행히도 그것은 콘솔에 오류가 발생하여 파이어 폭스에서 문제를 해결하는 데 도움이되지 않습니다. – user1873378

답변

0

네, 문제는 페이지와 이미지가 동일 출처 아니라는 것이다.

해결 방법은 이미지와 마찬가지로 www.domain.com에서 페이지를로드하거나 서버가 해당 CORS 헤더에 이미지를 보내도록하는 것입니다.

다른 브라우저에서 작동한다고해서 놀랍습니다. www.domain.com에서 페이지를로드 했습니까?

+0

예 페이지 여물통 www.domain 그러나 나는 document.domain를 검사하는 경우에 "domain.com"심상 및 페이지는 동일한 서버 및 영역에있다, 다름은 심상의 document.domain에는 "www.domain.com가있다이다 '이 아니라'domain.com '이 아닙니다. – user1873378

+0

@ user1873378 오? 스크립트가'document.domain'을 "domain.com"으로 설정 했습니까? 어떤 버전의 Firefox를 테스트하고 있습니까? Firefox 18 이상에서는 drawImage 보안 검사에 대해'document.domain'을 무시하지만 이전 버전에서는이를 고려합니다 ... –

관련 문제