Canvas.toDataURL()でSECURITY_ERR例外が出る
canvas.toDataURL()メソッドは、origin-cleanフラグがtrueでないとSECURITY_ERR例外を投げる。
origin-cleanフラグは最初 true だが、別オリジンのImageでdrawImageしたりすると false になる。
document.createElement で生み出した canvas に、
img = new Image(); img.src = "./image/0.png"
の画像をdrawImageしたからか?
どうやらローカル環境だったかららしい。サーバにアップロードしたら動いた。
つまり「C:\works\mamanyonyo\image」と「C:\works\mamanyonyo」が別オリジンって扱いなのか?
回避方法
- Firefoxの場合
about:config から、security.fileuri.strict_origin_policy を false に設定する
参考:HTML5 Canvas/getImageData and the nefarious(Matthias Siegel のコメントに詳しく書かれています)
起動オプションに「--allow-file-access-from-files」を付加する
参考:JavaScriptにおけるローカルファイルアクセス権限のポリシー: 雪羽の発火後忘失
(canvas の getImageDataが少しめんどくさい(特にローカルで動かす場合)Add Star - 地平線に行く)