<!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. Из этого холста я хочу создать изображение, используя метод "toDataURL ()". Здесь я получаю ошибку безопасности.
Firefox говорит - Ошибка: необработанное исключение: [Исключение ... "Ошибка безопасности" код: "1000" nsultult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)"
Chrome сообщает - Uncaught Error: SECURITY_ERR: DOM Exception 18
Если я использую скрипт с изображением на сервере, он работает нормально. Так что думаю, на этот раз это действительно особенность, а не ошибка.
У кого-нибудь есть идея, как я могу создать изображение с помощью canvas из другого сервера?
Кстати: ошибка возникает, если вы запускаете сайт как локальный файл без веб-сервера.