Неудобно, но обёртка ещё хуже тем, что надо помнить, какие методы нативные, а какие кастомные. Или же реализовывать кастомный алиас для каждого нативного метода. Все три способа хреновые, я выбрал для себя меньшее из зол.
Лучший вариант -- расширение прототипа -- недоступен в IE. |
Цитата:
|
В прямом. У DOM элементов в IE нет прототипов.
|
Цитата:
Однако в IE8 можно уже и так:
//Element.getElementsByClassName IE8+
function getElementsByClass(getClass){
if(document.querySelectorAll) {
return document.querySelectorAll("." + getClass);
}
else if(document.getElementsByClassName) {
return document.getElementsByClassName(getClass);
}
else {
var list = document.getElementsByTagName('*'), i = list.length,
classArray = getClass.split(/\s+/), result = [];
while(i--) {
if(list[i].className.search('\\b' + classArray + '\\b') != -1) {
result.push(list[i]);
}
}
return result;
}
};
HTMLDocument.prototype.getElementsByClassName = Element.prototype.getElementsByClassName = getElementsByClass;
оффтоп вообще интересно что Node.ELEMENT_NODE/Node.TEXT_NODE в IE9 по прежнему не определяются, зато 10-ю очень хорошо расширили (только что проверил там есть поддержка!) |
var newOffset= getElementOffset('#xxx') + 10
setElementOffset( '#xxx', new Offset ) -- vs -- var el= $('#xxx') var newOffset= el.offset() + 10 el.offset( newOffset ) === не задалбывает каждой функции передавать элемент первым параметром? |
monolithed, а для ие7- можно задать одноразовый экспрешн, который добавит нужные методы при добавлении элемента в дом.
|
Цитата:
|
Цитата:
Цитата:
http://blogs.msdn.com/b/ie/archive/2...-download.aspx по-моему они решили запомниться этими рыбками. И, кстати, быстро у них появилось preview следующей версии Цитата:
Цитата:
|
Цитата:
Проблема: добавить методы для работы с DOM-элементами. Хорошее решение: расширение прототипа. Не будь IE, проблем бы не было. Есть три удовлетворительных решения: 1. Обёртка (jQuery, ExtJS). 2. Добавление методов прямо в DOM-элементы (PrototypeJS, раньше по крайней мере). 3. Обычные функции, принимающие первым аргументом DOM-элемент. Я для себя выбрал третий вариант. Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 23:03. |