<!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» nsresult: «0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)»
Chrome сообщает - Неперехваченная ошибка: SECURITY_ERR: DOM Exception 18
Если я использую сценарий с изображением на сервере, он работает нормально. Поэтому он думает, что на этот раз это действительно особенность, а не ошибка. Кто-нибудь знает, как я могу создать изображение, используя холст, без изображения из другого сервера? Кстати: ошибка возникает, если вы запускаете сайт как локальный файл без веб-сервера.