Мы собираемся использовать Iconfu SVGInject для внедрения файлов SVG в наши файлы HTML.Один из наших проектов по какой-то причине все еще требует поддержки IE8 (не спрашивайте), поэтому я был вынужден проверить это на действительно старых браузерах.
Существует резервный пример для отсутствия поддержки SVG в документах SVGInject, который выглядит следующим образом (размеры изображения добавлены мной):
<html>
<head>
<script src="svg-inject.min.js"></script>
</head>
<body>
<img src="image.svg" width="128" height="128" onload="SVGInject(this)" onerror="SVGInject.err(this, 'image.png')" />
</body>
</html>
В то время как запасной вариантработает со стандартной конфигурацией IE8, я обнаружил, что не существует запасного варианта для случаев, когда браузер не поддерживает ни SVG, ни Javascript (например, IE8 с отключенным Javascript).
Вот что отображается в различных сценариях:
Современные браузеры (Chrome, Firefox, Webkit)
SVG внедряется как встроенный SVG, полностью поддерживает стиль
Современные браузеры, Javascript отключен
SVG отображается как <img>
, не поддерживается
Internet Explorer 8
Отображается резервный PNG
Internet Explorer 8, JavaScript отключен
Отображается разбитое изображение
Причина, по которой в последнем сценарии не отображается изображение, заключается в том, что ошибка никогда не возникаетуволен, поэтомуисходный атрибут резервной копии не может быть установлен.
Мне было интересно, есть ли способ (или способ взлома) сделать резервное изображение даже в тех случаях, когда ни SVG, ни поддержка Javascript недоступны.
Примечание: этоболее теоретический вопрос.Хотя проект требует поддержки IE8, я думаю, что это некое устаревшее требование, так как требования были написаны в 2010 году.