Показать сообщение отдельно
  #1 (permalink)  
Старый 23.04.2012, 02:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

spike - библиотека внедряет W3C-шные методы в IE
Снова всем привет, хочу представить вам новую свою разработку.

Данная библиотека предназначена именно для 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. Не забываем фоловится на гитхабе
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 28.05.2012 в 09:42.
Ответить с цитированием