Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Node.prototype в ие 8 (https://javascript.ru/forum/events/62944-node-prototype-v-ie-8-a.html)

DynkanMaclaud 08.05.2016 16:00

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())

DynkanMaclaud 09.05.2016 15:00

в ие 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 11.05.2016 20:33

DynkanMaclaud, они как бы есть :)
element.getElementsByTagName('*');
element.querySelectorAll('*');

DynkanMaclaud 11.05.2016 22:13

Rise,
querySelectorAll в ие 8 не работает, а про getElementsByTagName(*), запамятовал)))) Да и не в самом методе суть, а то что не мог найти объект в прототип которого его можно было вставить...

Rise 11.05.2016 22:31

DynkanMaclaud, и в ие 8 работает ты застрял в прошлом :)

DynkanMaclaud 11.05.2016 22:36

Rise,
ссылка 0
блин а я вот этому ресурсу доверился...

DynkanMaclaud 11.05.2016 22:39

Rise,
а у тебя сейчас какой год*))))?

Rise 11.05.2016 22:41

DynkanMaclaud, там написано
Цитата:

Note: Internet Explorer 8 has support for CSS2 selectors. IE9 and later versions have support for CSS3 as well.
А звездочка является CSS2 селектором как бы)

DynkanMaclaud 11.05.2016 22:54

Rise,
не спорю что-то я недооценил поддержку querySelector, спасибо.


Часовой пояс GMT +3, время: 12:22.