вторник, 11 октября 2011 г.

Исправляем некорректность верстки SVG-файлов на Яру и ЖЖ

Итак как я раньше писал, ярушка не допускает - возможность ставить SVG файлы впрямую, а лишь ее жалкие возможности протаскивает через статический тэг изображения img.
.Так вот я решил исправить положение с помощью установки специальной РЮШЕЧКИ, , но по соображениям меркантильности - разместить ее и ее описание на своем пространстве, а так же описать ее работу. Я не в коем мере не подрываю авторитет уважаемого мной яндекса - упаси бог, но я человек бедный измученный нарзаном битый не раз, практически забанееный на всех клубах поддержки, а так же и кроме них - решил поделиться свои знанием исключительно в своих Пенатах.
Ну начнем
Файл формата векторной графики по прежнему ставится в обыкновенный имадж , т. е так
<img src="ссылка_на_файл"
type="image/svg+xml"/>
А юзеровским скриптом имадж заменяется на тег embed и все
Сначала приведем его полный текст
window.addEventListener('load',function(){
var m,p,j,
an = document.querySelectorAll(
'img[src="image/svg+xml"]');
for(j=0;j<an.length;j++){
m = document.createElement('embed');
m.setAttribute('type','image/svg+xml');
m.setAttribute('src',
an[j].getAttribute('src'));
p = an[j].parentNode;
p.replaceChild(m,an[j]);
}},true);
Все решается достаточно просто. Сначала определятся наличие имаджей с MIME-type image/svg+xml, а затем по порядку имаджи заменяются на embed. Сама замена лежит в оболочке события загрузке страницы.
*9-01-12 *** дополнение
Чтобы не перегружать и так слабую Ярушку в загрузки длинных портянок, было принято решение - преобразование делать только при явном укказании MIME-типа (смотри выше)
*29-01-12 *** дополнение
Для решеия этой же проблемы ЖЖ был добавлен путь включения
*17-05-12 ***
Тело скрипта по рекомендации разработчика расширения перенесено на приватный просмотр по протоколу https
Скрипт можно установить вот отсюда, А как его устанавливать можно прочитать здесь
Пример с прямым управлением можете удивить в моем дневнике, а реализация самого красивого исполнения на прямом внедрении игрушки Сокобан на Ярушке здесь