Книга: JavaScript. Подробное руководство, 6-е издание

13.4.1. Библиотеки обеспечения совместимости

13.4.1. Библиотеки обеспечения совместимости

Один из самых простых способов избавиться от проблемы несовместимости заключается в использовании библиотек, реализующих обходные решения. Рассмотрим в качестве примера элемент <canvas>, предназначенный для создания графических изображений на стороне клиента (эта тема обсуждается в главе 21). Броузер IE является единственным текущим броузером, не поддерживающим эту особенность. Однако он поддерживает собственный, малоизвестный язык создания графических изображений на стороне клиента, который называется VML, с помощью которого можно было бы имитировать действие элемента <canvas>. Открытым проектом «explorercanvas» (http://code.google.eom/p/explorercanvas) была выпущена библиотека, реализующая эту имитацию: достаточно подключить к веб-странице единственный файл excanvas.js с программным кодом на языке JavaScript, и броузер IE будет вести себя так, как если бы он поддерживал элемент <canvas>.

Библиотека excanvas.js может служить ярким примером библиотеки обеспечения совместимости. Точно так же можно написать другие библиотеки, реализующие конкретные особенности. Методы массивов, введенные стандартом ES5 (раздел 7.9), такие как forEach(), map() и reduce(), с успехом можно реализовать в ES3, и добавляя соответствующую библиотеку к страницам, можно получить возможность использовать эти мощные методы как часть базовой платформы любого броузера.

Однако иногда невозможно создать полноценную (или эффективную) реализацию особенности в броузерах, не поддерживающих ее. Как уже упоминалось, IE - единственный броузер, который не реализует стандартный API обработки событий, включая метод addEventListener() регистрации обработчиков. Броузер IE поддерживает похожий метод с именем attachEvent(). Однако метод attachEvent() не такой мощный, как addEventListener(), и в действительности не существует очевидного способа реализовать все стандартные методы на основе возможностей, предоставляемых броузером IE. Вместо этого разработчики иногда определяют компромиссный метод обработки событий - часто давая ему имя addEvent() -который переносимым способом может использовать либо addEventListener(), либо attachEvent(). Затем они пишут свой программный код, использующий метод addEvent() вместо addEventListener() или attachEvent().

На деле многие веб-разработчики в своих веб-страницах используют фреймворки на языке JavaScript, такие как jQuery (описывается в главе 19). Одна из функций, которая делает эти фреймворки такими необходимыми, - определение нового клиентского прикладного интерфейса, совместимого со всеми броузерами. В jQuery, например, регистрация обработчиков событий выполняется с помощью метода bind(). Если вы начнете использовать jQuery во всех своих разработках, вам никогда не придется задумываться о несовместимости методов addEventListener() и attachEvent(). Подробнее о клиентских фреймворках рассказыватся в разделе 13.7.

Оглавление книги


Генерация: 0.545. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз