За всички намерения и цели, да кажем, че имам уеб страница с поле за въвеждане, където потребителите могат да въведат URL адрес на изображение, да щракнат върху бутон и да получат URI на данни за ресурса в другия край на техния URL адрес (напр. логото на Google ).
Четейки наоколо, научих, че можете да получите URI на данни за изображения като така:
function imageToDataURI(src,callback)
{
var canvas = document.createElement('canvas'),
img = document.createElement('img');
img.onload =
function()
{
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext('2d').drawImage(img, 0, 0);
callback(canvas.toDataURL());
};
img.src = src;
}
Въпреки това, много хора (включително и аз) получават „SECURITY_ERR: DOM Exception 18“, защото елементите на canvas се повреждат, когато върху тях се рисуват изображения от различни домейни, а повредените платна връщат горната грешка на canvas.toDataURL() (вижте Защо canvas.toDataURL() хвърля изключение за сигурност?). Моят проблем е: наистина трябва да поддържам кръстосани URL адреси!
Какво мога да направя?