Почему делает canvas.toDataURL (), бросают исключение безопасности?

Разве я не получил достаточно сна или что? Этот после кода

var frame=document.getElementById("viewer");
frame.width=100;
frame.height=100;

var ctx=frame.getContext("2d");
var img=new Image();
img.src="http://www.ansearch.com/images/interface/item/small/image.png"

img.onload=function() {
    // draw image
    ctx.drawImage(img, 0, 0)

    // Here's where the error happens:
    window.open(frame.toDataURL("image/png"));
}

бросает эту ошибку:

SECURITY_ERR: DOM Exception 18

Нет никакого способа, которым это не должно работать! Кто-либо может объяснить это?

88
задан sideshowbarker 2 February 2019 в 16:47
поделиться

2 ответа

В спецификации сказано:

Каждый раз, когда метод toDataURL () элемента холста , источник которого -clean flag установлен в false, вызывается метод должен вызывать исключение SECURITY_ERR.

Если изображение поступает с другого сервера, я не думаю, что вы можете использовать toDataURL ()

67
ответ дан 24 November 2019 в 07:36
поделиться

Вы не можете ставить пробелы в ID

Update

Я предполагаю, что изображение находится на другом сервере, чем тот, где вы выполняете скрипт. Мне удалось продублировать вашу ошибку при запуске скрипта на моей собственной странице, но он работал нормально, когда я использовал изображение, размещенное на том же домене. Значит, это связано с безопасностью - разместите изображение на своем сайте. Кто-нибудь знает, почему так происходит?

.
1
ответ дан 24 November 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: