При создании div это экземпляр HTMLDivElement
:
var d = document.createElement('div');
d instanceof HTMLDivElement; // true
d instanceof Element; // true
Это также верно при получении внешнего документа и окна:
var frame = document.createElement('iframe');
document.body.appendChild(frame);
var doc2 = frame.contentWindow.document;
var d2 = doc2.createElement('div');
d2 instanceof frame.contentWindow.HTMLDivElement; // true
d2 instanceof Element; // false, different realm/dom
Я пытался создать документ с конструктором Document
для обработки внешнего HTML-документа:
var doc = new Document();
var d = doc.createElement('div');
d instanceof Element; // true
Итак, он создает Элементы, и элементы находятся в той же сфере, что и та, в которой мы находимся. Однако, к моему удивлению, не печатает свои элементы:
d instanceof HTMLDivElement; // false
d.constructor.name; // "Element"
Почему это так и почему текущий документ создает типизированные элементы, а новый документ создает только Element
?