[блогеру на заметку] Реализация getElementsByClassName для IE8
Добавил в шаблон блога реализацию метода getElementsByClassName для Internet Explorer, теперь в IE8 нормально отрабатывает скрипт замены дат. В других браузерах, не имеющих поддержки этого метода, код тестировать лень, так как их долей по сравнению с Firefox 3 и IE8 можно спокойно пренебречь.
В отличие от большинства реализаций getElementsByClassName, что попадаются в интернетах, данная встраивается непосредственно в прототипы объектов DOM-дерева и может вызываться как метод любого узла, а не как внешняя функция. Т.е. весь остальной код не придётся переделывать ради совместимости с IE.
<script type='text/javascript'> if( typeof document.getElementsByClassName != 'function' ) { HTMLDocument.prototype.getElementsByClassName = Element.prototype.getElementsByClassName = function (className) { if( !className ) return []; var elements = this.getElementsByTagName('*'); var list = []; var expr = new RegExp( '(^|\\b)' + className + '(\\b|$)' ); for (var i = 0, length = elements.length; i < length; i++) if (expr.test(elements[i].className)) list.push(elements[i]); return list; }; } </script>
5 комментариев
HTMLDocument - определение отсутствует. IE8
Спасибо, мужик! :D
спасибо мужик
HTMLDocument и Element не понимает ие. Это точно рабочий пример?
Часть этого кода мне помогла, спасибо
Отправить комментарий