Как отличить живые и неживые коллекции NodeList?
И document.getElementsByTagName('div'), и document.querySelectorAll('div') возвращают коллекцию NodeList. Единственное отличие состоит в том, что первый метод возвращает live-collection, а второй - статический.
Вопрос: есть ли возможность отличить один объект от другого только путем проверки этих объектов (т.е. не пытаться добавить/удалить некоторые элементы для проверки "живой" )?
заблаговременно
Ответы
Ответ 1
Интерфейс NodeList
является агностиком его мертвого или живого состояния.
interface NodeList {
Node item(in unsigned long index);
readonly attribute unsigned long length;
};
Он содержит только свойство length
и метод item
, поэтому я боюсь, что в настоящее время невозможно определить, жив ли объект, не манипулируя DOM и не видя эффекты.
Ответ 2
a=document.querySelectorAll('a');
b=document.getElementsByTagName('a');
a.toString() == "[object NodeList]"
b.toString() == "[object HTMLCollection]"
(в FF/Chrome)