<!doctype html>
<canvas id="canvas" height="200" width="200"></canvas>
<div id="new"></div>
<script>
var div = document.getElementById("new");
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var img = new Image();
img.src = 'http://www.w3.org/html/logo/downloads/HTML5_Logo_512.png';
//img.src = 'local.png';
img.onload = function(){
//draws the image on the canvas (works)
ctx.drawImage(img,0,0,200,200);
//creates an image from the canvas (works only for local.png)
var sourceStr = canvas.toDataURL();
//creates the img-tag and adds it to the div-container
var newImage = document.createElement("img");
newImage.src = sourceStr;
div.appendChild(newImage);
}
</script>
このスクリプトは、html5-logoでキャンバスを作成します。このキャンバスから、 "toDataURL()"メソッドを使用してイメージを作成します。ここで私はセキュリティエラーが発生します。canvas.toDataURL()およびdrawImage()のセキュリティエラー
Firefoxは言う - エラー:キャッチされない例外:[例外... "セキュリティエラー" コード: "1000" nsresult: "0x805303e8(NS_ERROR_DOM_SECURITY_ERR)"
クロムは言う - 不明なエラー:SECURITY_ERR:DOM例外18
サーバー上のイメージでスクリプトを使用すると正常に動作します。だから今回は本当に機能でありバグではないと思う。 誰かがイメージフォームと他のサーバーの外にキャンバスを使ってイメージを作成する方法を知っていますか? BTW:Webサーバーなしでサイトをローカルファイルとして実行するとエラーが発生します。
答えはまだ見つかりましたか?私は同じ問題を抱えています。同じサーバーの画像でさえも起こります。画像がキャンバスに描画されると、キャンバス全体がアクセス不能になります。 – Kokodoko