Книга: 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.
- Библиотеки совместимости
- 13.4.4. Режим совместимости и стандартный режим
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Выбор аппаратного обеспечения для InterBase
- Режим обратной совместимости
- Настройка библиотеки
- Обеспечение безопасности библиотеки
- Удаление библиотеки
- Функция программного обеспечения
- 12.5. Другие библиотеки для создания графических интерфейсов
- Центр обеспечения безопасности
- Процесс разработки программного обеспечения