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」が別オリジンって扱いなのか?

回避方法

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 - 地平線に行く