Node.prototype в ие 8
решил написать метод который возвращал бы всех потомков. Прочитал что все DOM объекты налсдедуют методы от Node.prototype. Закинул я в Node.prototype функцию ниже и всё работает да вот только не в ие 8, где объекта Node вообще нету, так вот вопрос откуда тогда DOM элементы наследуют методы и свойства в 8ие?:help:
Чтобы туда закинуть этот метод и как вообще определить от какого объекта происходит наследование?? если б не прочитал про Node.prototype, то так бы и не понял, что именно в него нужно записывать метод, также можно в Object.prototype, но тогда это затронит все объекты, а мне это не нужно ( кстати и через Object.prototype в ие 8 борода((( ) Node.prototype.getAll = function () { var c = this.children, mas = []; (function f(node) { for (var i=0; i < node.length; i++) { mas.push(node[i]); if (!node[i].children.length) continue else { var k = node[i].children; f(k); } } })(c); return mas; } console.log(document.documentElement.getAll()) |
в ие 8 Все DOM элементы наследуют свойства от объекта Element, поэтому для того чтобы добавить свой метод или свойства ко всем объектам DOM и чтобы этот метод был кроссбраузерным, то следует записывать ваш метод или свойство в прототип Element.prototype.
Element.prototype.getAll = function () { var c = this.children, mas = []; (function f(node) { for (var i=0; i < node.length; i++) { mas.push(node[i]); if (!node[i].children.length) continue else { var k = node[i].children; f(k); } } })(c); return mas; } console.log(document.documentElement.getAll()) |
DynkanMaclaud, они как бы есть :)
element.getElementsByTagName('*'); element.querySelectorAll('*'); |
Rise,
querySelectorAll в ие 8 не работает, а про getElementsByTagName(*), запамятовал)))) Да и не в самом методе суть, а то что не мог найти объект в прототип которого его можно было вставить... |
DynkanMaclaud, и в ие 8 работает ты застрял в прошлом :)
|
|
Rise,
а у тебя сейчас какой год*))))? |
DynkanMaclaud, там написано
Цитата:
|
Rise,
не спорю что-то я недооценил поддержку querySelector, спасибо. |
Часовой пояс GMT +3, время: 12:22. |