LINUX.ORG.RU

[JavaScript] Проверка поддержки браузером тегов

 


0

0

Как проверить, поддерживает ли браузер тег <embed>? Например, в firefox динамически <embed> добавляется и в него нормально загружается SVG, а вот в Seamonkey <embed> добавляется, но никакого изображения внутри него не появляется.

Можно ли как-то узнать, что браузер такое не поддерживает, и в этом случае вместо <embed> с SVG вставить <img> с корявым gif-ом?

☆☆☆☆☆

Пытался проверить по возвращаемому значению функции appendChild - не тут то было! Она даже «тупые» элементы вроде <nonsense> добавляет! И в DOM они появляются o_O, хотя, естественно, ничего не отображают...

Eddy_Em ☆☆☆☆☆
() автор топика

Сделал вот так:

	var image = $('IMG');
	if(image){
		image.parentNode.removeChild(image);
	}
	if(ImType == '0')
		var image_ = document.createElement('embed');
	else
		var image_ = document.createElement('img');
	image_.id = 'IMG';
	$('cencol').appendChild(image_);
Но если человек выберет «формат изображения» SVG, а оно не будет поддерживаться его браузером, либо ничего не появится, либо выскочат «матюги» вроде «установите доп. плагины»...

Так что, неужели нет нормального способа узнать, поддерживается браузером SVG или нет?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Если бы только поддерживается. Опера, к примеру, может SVG в IMG и url() свойствах в CSS использовать. Остальные бразуеры, вроде как, такое не могли пока. У Object есть fallback, а вот с embed не могу сказать.

Deleted
()
Ответ на: комментарий от Deleted

Так что, способа узнать, поддерживается ли браузером тот или иной тег не существует?

Перебирать по UA смысла нет - в него можно напихать все, что угодно :)

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Deleted

Как вариант, сделать всем object с fallback'ом внутри. Если какой старый IE не может object с svg (или сам по себе) как надо, на него можно и проверку сделать.

Deleted
()
Ответ на: комментарий от Eddy_Em

Нет :) Есть всякие capabilities, но к элементами они, вроде как, отношения не имели. Просто по причине того, что HTML расширяется, браузеры должны принимать создание незнакомых им элементов :)

Deleted
()
Ответ на: комментарий от friday

<embed><img src="...«/></embed> не покатит?

Нет, это практически то же самое, что я уже сделал: если SVG браузер пользователя не поодерживает, а он выберет SVG, картинки не будет. А я хотел прятать надпись „SVG“, если браузер все равно древний.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

>Перебирать по UA смысла нет - в него можно напихать все, что угодно :)

Вообще-то это проблемы тех, кто напихал туда что угодно, а не разработчика.

В то же jquery есть методы, определяющие браузеры по косвенным признакам, но это увы не то, что было в исходном вопросе

http://api.jquery.com/jQuery.support/

anonymous
()
Ответ на: комментарий от Zur0

Спасибо, попробую. Правда, там большинство тестов на всякие video/audio, но можно проверить, не подойдет ли тестирование <canvas> к тестированию на svg.

А вообще, у меня огнелис 3.5.5 набрал всего лишь 100 баллов :( Интересно, есть ли браузер, набирающий все 160?

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Deleted

Теора-то как раз есть:

video element Yes H.264 codec support No Ogg Theora codec support Yes

А поддержку h264 я и в mplayer'е-то только недавно настроил, когда купил более-менее нормальную видеокарту и скомпилировал mplayer с VDPAU :)

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Deleted

Какой смысл добавлять поддержку h264, если этот кодек жрет трафик черт те как, да и редкий компьютер потянет видео в этом формате.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Я про

А вообще, у меня огнелис 3.5.5 набрал всего лишь 100 баллов :(

Интересно, есть ли браузер, набирающий все 160?



:)

Deleted
()
20 мая 2010 г.

А накуя вообщ юзать мелкомягкий embed, которого ни в одном стандарте нет, когда есть object?

INFOMAN ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.