Moz, webkit и прочие vender-грабли

Основными инициаторами новых возможностей и проводниками передовых стандартов являются, вполне ожидаемо, производители браузеров. Совершенно привычно, когда новейшие технологии впервые описываются или даже демонстрируются на какой-нибудь IT-конференции представителями команды разработчиков Google Chrome, Mozilla Firefox, Internet Explorer или Opera. Естественно, любую удачную технологию, тем более технологию, которая в перспективе станет стандартом, стремятся реализовать все, но ее воплощение и приоритеты разработки различных ее аспектов могут существенно отличаться. Этот факт и вышеупомянутые проблемы совместимости вместе с желанием не отстать, а, наоборот, опередить время часто вынуждают производителей браузеров «локализовы-вать» API новых, нестандартизированных технологий с помощью так называемых «vendor prefix». Это выражается в появлении объектов и методов точных копий будущего, пока не стандартизированного API, некой новой чудесной технологии, к названию которых добавлен префикс, созвучный с названием браузера (или движка), на котором этот элемент будет работать. То есть если, например, замечательный объект FileReader, используемый в FileAPI в настоящий момент, не распознается ни одним общеупотребительным браузером, то объект mozFileReader вполне можно использовать в FireFox, а, например, webkitFileReader — в Google Chrome и Safari.

В дальнейшем материале vendor prefix, кроме особенных случаев, не используются, но если приведенный в книге код не будет работать, нелишней процедурой будет попробовать их применить. В реальных приложениях, использующих «пограничные» технологии, тоже лучше подстраховать пользователя, как это сделано в коде, приведенном ниже:

If (file. webkitSlice) {

Var blob = file. webkitSlice(startingByte, endindByte); } else If (file. mozSlice) {

Var blob = file. mozSlice(startingByte, endindByte);

}

На всякий случай вот список сопоставлений браузерных движков и соответствующих им vendor prefix:

— ms — Trident (IE6, IE7, IE 8, Internet Explorer 9, Internet Explorer 10);

— mso — Microsoft Office;

— moz — Gecko (Firefox, Thunderbird, Epiphany);

— o — Presto(Opera, Opera Mobile, Nintendo DS Browser, Nokia 770, Internet Channel);

— atsc — Advanced Television Standards Committee;

— wap — The WAP Forum;

— webkit — WebKit (Chrome, Safari, Stainless, Raven);

— khtml — Konqueror browser.

Разумеется, vendor prefix — это те самые классические «костыли», применять которое вроде бы нехорошо по определению. Но мы живем в реальном мире и пишем для реальных людей реально работающие приложения, не так ли? Тогда сейчас поговорим еще об одном инструменте, помогающем нести новые веб-стандарты в наш несовершенный мир, и, наконец, примемся за HTML5.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *