Как кодировать данные изображения в файле HTML? - PullRequest
7 голосов
/ 18 января 2010

Я хотел бы иметь возможность выводить HTML-файл, который включает изображение (в самом файле).По Google, я нашел несколько способов сделать это:

  • javascript:imageData
  • URI данных, таких как <IMG SRC="data:image/gif;base64,[...]">
  • <object ... > tag (хотя при этом используется URI данных, поэтому он может наследовать те же ограничения)

Но я не знаю, какой из них лучше поддерживается браузерами или есть ли другие альтернативы.1015 * Может ли кто-нибудь с некоторым практическим опытом этого предложить мне совет?Спасибо.

Ответы [ 4 ]

8 голосов
/ 18 января 2010

Что касается поддержки браузера, из Википедия :

URI данных в настоящее время поддерживаются следующие веб-браузеры:

  • Gecko и его производные, такие как Mozilla Firefox
  • Opera
  • KDE, через систему ввода / вывода KIO. Это позволяет браузеру KDE Konqueror поддерживать URI данных.
  • Safari; хотя движок рендеринга Safari, WebKit, является производным от движка Konqueror KHTML, Mac OS X не разделяет подчиненную архитектуру KIO, поэтому реализации не являются общими.
  • Safari для iPhone;
  • Google Chrome
  • Internet Explorer 8; Microsoft имеет ограниченную поддержку для некоторых «не навигационных» материалов, таких как теги и правила CSS, по соображениям безопасности, включая опасения, что JavaScript, встроенный в URI данных, может не интерпретироваться фильтрами сценариев, такими как те, которые используются в электронной почте через Интернет клиентов. URI данных должны быть меньше 32 КБ.
  • TheWorld Browser; браузер оболочки IE со встроенной поддержкой схемы Data URI

IE не обрабатывает тег <object> правильно, см. здесь для более подробной информации. Вкратце, вы не можете доверять IE для отображения изображений с него.

javascript:imageData также не очень хорошо поддерживается, так как он используется во многих межсайтовых скриптовых атаках.

Существует множество обсуждений этого в сети , и все они приходят к выводу, что не существует хорошего универсального способа встраивания изображений. Если вам нужно только поддерживать подмножество браузеров, может работать URI данных или комбинация URI данных и JavaScript.

1 голос
/ 18 января 2010

Схема URI данных хорошо поддерживается, за исключением Internet Explorer до версии 8.

URI JavaScript, я думаю, немного лучше поддерживаются, но не работают, если JS недоступен.

Лучшее, что вы можете сделать, это использовать внешние ресурсы изображений.

1 голос
/ 18 января 2010

imageData является более гибким, например, некоторые ie ограничивают Uris данных до 32 КБ.

0 голосов
/ 18 января 2010

URI данных не будут работать в

...