HTML5 要素 getImageData() で問題が発生しました。Web サイトのスクラッチ ツールに wScratchPad を使用し、wScratchPad のパーセンテージ関数を使用してオーバーレイを削除するタイミングを決定しています。IE9、Safari、Chrome で問題なく動作しています。しかし、Firefox では SECURITY ERROR がスローされます。
ChromeとIE9でも同じ問題がありましたが、JS、画像、HTMLを同じサーバーに移動することで修正しました。
JS とキャンバス イメージのドメインが同じドメインにない場合、エラーがスローされることがわかっているので、イメージと js の両方の document.domain を確認しました。「document.domain = domain.com」として JS のように見え、画像には document.domain = www.domain.com があります。
それが問題でしょうか?もしそうなら、どうすれば修正できますか?ブラウザをオーバーライドしてスクリプトのユーザー確認のアラートを受け取る方法は既に見ましたが、これは知名度の高い Web サイトであるため、これは問題外です。
エラーの原因となる 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;
},