Проверка того, является ли объект DOM-элементом
Передача элементов DOM в WebWorkers становится сложной, поскольку все ссылки на DOM "потеряны". Мне нужно проверить объекты, которые передаются до отправки сообщения WebWorker.
Каков самый быстрый способ проверить, является ли экземпляр объекта DOM-элементом OR/AND частью дерева DOM, OR имеет "дочерние", которые содержат ссылки на дерево DOM?
часть использования:
var a = new SharedWorker("bigdatahandler.js");
a.postMessage(s);
s //<--should not be a DOM object
Ответы
Ответ 1
Чтобы проверить, является ли это элементом, я думаю, obj.nodeName
- ваш лучший выбор.
var a = new SharedWorker("bigdatahandler.js");
if (!s.nodeName) {
a.postMessage(s);
}
Вы также можете проверить s instanceof Element
, потому что вам не нужно поддерживать IE, я думаю:)
Чтобы проверить, является ли это частью DOM:
function inDOM(elem) {
do {
if (elem == document.documentElement) {
return true;
}
} while (elem = elem.parentNode)
return false;
}
Ответ 2
Чтобы проверить, является ли объект экземпляром Элемент, используйте instanceof
:
s instanceof Element
Чтобы проверить его документ владельца, используйте ownerDocument
:
s.ownerDocument == document
Ответ 3
Проверьте s instanceof Node
. Каждый объект DOM является Node
.