2015-01-17 2 views
0

Вот мой тестовый пример.img Внутри foreignObject Внутри svg Внутри img

http://tobeythorn.com/isi/dummy2.svg

http://tobeythorn.com/isi/isitest.html

  • Если я просто открыть SVG сам по себе, внутренний IMG оказывается в порядке.

  • Но когда я делаю это svg src img, внутренний img не отображается. Я не получаю ошибок.

  • Если я создаю внутренний img-url-адрес, он будет отображаться. Если это возможно, я бы хотел избежать ссылок на данные, поскольку они усложняют ситуацию, имеют ограничения по размеру и не могут быть кэшированы.

  • То же самое происходит в FF, Chrome, Opera и Safari.

Я не могу найти решение, но, возможно, связано: foreignObject inside second SVG element for Chrome

вопрос Перекрестная происхождения?

Ограничение спецификации?

Ошибка браузера?

+1

В отличие от сайтов форума, мы не используем «Спасибо», или «Любая помощь приветствуется», или подписи [так]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - спасибо за сообщение). Кстати, это «Спасибо заранее», а не «Спасибо в продвинутый». –

ответ

0

Все SVG-файлы, используемые в качестве изображений, должны быть заполнены в одном файле. Изображения не могут загружать внешние данные.

Значит, вам нужно сделать base64 encode изображение и вставить его в SVG как data URL, чтобы заставить его работать.

+0

Я вижу. Очень хорошо знать, хотя и довольно раздражает. – user3788756

+0

Мне тоже нужно решить это, не знаю, как сделать то, что вы описали. Можете ли вы добавить более подробную информацию? – brainbag

+0

@brainbag Что конкретно? Как сделать кодировку base64? Или как создать URL-адрес данных. В онлайн-кодировщиках и википедии или других источниках описываются URL-адреса данных. Я добавил некоторые ссылки на ответ. –

0

Я не вижу ваш пример, но если вы используете JS для добавления html-элемента в svg, вы должны помнить, используя префикс, чтобы сообщить браузеру, что этот элемент является svg или html.

Например, если вы добавите в HTML IMG элемент:

$('svg').append('svg:foreignObject').append('xhtml:img').attr('src','./foo.jpg');