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())
|
Rise,
querySelectorAll в ие 8 не работает, а про getElementsByTagName(*), запамятовал)))) Да и не в самом методе суть, а то что не мог найти объект в прототип которого его можно было вставить... |
|
Rise,
а у тебя сейчас какой год*))))? |
Rise,
не спорю что-то я недооценил поддержку querySelector, спасибо. |
| Часовой пояс GMT +3, время: 16:21. |