Сегодня допилил модель Element
Возможности модели максимально приведены в нормальное состояние, возможность добавления методов полностью реализована без ограничений. Модель инициализируется даже до полной загрузки DOM модели, то-есть обращаться к прототипам элементов вы можете не дожидаясь полной загрузки страницы.
небольшой пример, который вы можете запустить в ИЕ 7 и ниже:
<html>
<head>
<script type="text/javascript" src="https://raw.github.com/devote/spike/master/models/element.js"></script>
</head>
<body>
<i></i>
<script type="text/javascript">
var div1 = document.createElement( 'div' );
div1.className = "elem_div1";
Element.prototype.test1 = function() {
alert( 'это функция "test1" на элементе: ' + this.nodeName + "." + this.className );
}
div1.test1();
// нужно добавить элемент в DOM что бы было отслеживание
// свойства innerHTML, к сожалению отследить изменение
// этого свойства можно лишь тогда когда элемент находится
// в DOM модели документа, но я считаю это не большим минусом
// так как уважающий себя программист данным свойством
// пользуется очень редко, ну или для других целей.
document.body.appendChild( div1 );
div1.innerHTML = '<b class="elem_B"></b>';
div1.firstChild.test1();
var div2 = document.createElement( 'div' );
Element.prototype.test2 = function() {
alert( 'это функция "test2" на элементе: ' + this.nodeName + "." + this.className );
}
alert( [ !!div1.test1, !!div1.test2 ] ); // true,true
alert( [ !!div2.test1, !!div2.test2 ] ); // true,true
// ищем элемент I в DOM
var i = document.getElementsByTagName( 'i' )[0];
// проверяем у него присутствие наших новых методов
alert( [ !!i.test1, !!i.test2 ] ); // true,true
</script>
</body>
</html>