Снова всем привет, хочу представить вам новую свою разработку.
Данная библиотека предназначена именно для Internet Explorer 6,7,8 а в дальнейшем возможно будет что-то добавлять и в IE9.
Скажу сразу, поддержку IE6 я не планировал, но реализация привела к тому что она очень даже хорошо работает в IE6, так что уж не обессудьте.
Что именно делает эта библиотека, а делает она очень простые вещи. Добавляет W3C-шные методы в ослобраузер, такие как addEventListener, querySelector и т.д.
Каждая реализация, а точнее модель разделена и при необходимости легко извлекается. То-есть библиотеку вы можете построить самостоятельно. Об этом чуть ниже.
DOM Element.prototype:
В IE7 и ниже нет возможности расширять элементы новыми прототипами, которые мы хотим делегировать всем элементам, для этого я написал небольшую модель для ее эмуляции в IE<8. Теперь она дает возможность нам расширить элементы своими методами.
Вот ниже один из способов будет корректно работать в IE 7-ой версии и ниже:
var div = document.createElement( 'div' );
Element.prototype.ourNewMethod = function() {
alert( 'Привет мир!' )
}
div.ourNewMethod(); // alerts 'Привет мир!'
и другие вариации которые вам придут в голову.
Методы которые добавляет данная библиотека:
.addEventListenerполная поддержка событий, включая возможность ловить события во время погружения, то-есть третий параметр метода не бездействует.
.removeEventListenerполная поддержка удаления событий, так же удаляет в зависимости от типа фазы распространения.
.dispatchEventполная поддержка ручного запуска события.
document.createEventчастичная поддержка создания событий, поддерживает события только DOM Level 2, то-есть Event, CustomEvent, UIEvent, MouseEvent. В дальнейшем возможно будет расширена.
Полная поддержка экземпляра события, поддерживает такие методы как:
.preventDefault()отменить действие по умолчанию.
.stopPropagation()прервать событие на следующей фазе или другом элементе.
.stopImmediatePropagation()полная остановка распространение события. (новое в HTML5)
и прочие свойства экземпляра события по требованиям DOM Level 2
Так же присутствуют константы указывающие тип фазы:
Event.CAPTURING_PHASE
Event.AT_TARGET
Event.BUBBLING_PHASE
Селекторы:
.querySelectorAllполный CSS3 селектор для поиска списка элементов, в IE8 добавляет поддержку только тех селекторов которые не имеет нативный метод.
.querySelectorполный CSS3 селектор для поиска одного элемента
.getElementsByClassNameполная поддержка поиска по классу элемента, так же можно указывать список классов которые обязательно должны будут присутствовать в искомом элементе
.matchesSelectorполный CSS3 селектор для проверки элемента
Все это на данный момент работает в IE 6,7,8. Жестких тестов не проводил, но во время разработки тесты дали положительный результат. Если будет желание потестить, или найдете ошибку, сообщайте мне и я от нее немедленно избавлюсь.
Все это добро вы как всегда можете найти у меня на гитхабе:
https://github.com/devote/spike
Файлы в корне это собранная библиотека из трех моделей, сами модели вы можете найти в папке models.
element.js - нужен для IE ниже 8-й версии, подключать самым первым
events.js - модель событий
selectors.js - модель селекторов
Постепенно я буду дополнять дополнительные модели, если у вас есть пожелания по написанию моделей я с удовольствием выслушаю.
Всем приятной разработки скриптов с мыслью о нормальной кросс-браузерности. Спасибо за внимание!
С Уважением, Дмитрий!
PS. Не забываем фоловится на гитхабе