If the current node is an element, calling insertBefore
has the following results, depending on the value of the newChild
parameter.
Node type passed in newChild | Result |
---|---|
NODE_CDATA_SECTION , NODE_COMMENT , NODE_ELEMENT , NODE_ENTITY_REFERENCE , NODE_TEXT , NODE_PROCESSING_INSTRUCTION |
Inserts newChild and returns newChild . |
NODE_ATTRIBUTE , NODE_DOCUMENT , NODE_DOCUMENT_TYPE , NODE_ENTITY , NODE_NOTATION |
Returns an error. These node types cannot be children of an element node. |
NODE_DOCUMENT_FRAGMENT |
Inserts the children of the document fragment (newChild ) and returns newChild . |
NODE_ENTITY_REFERENCE |
Returns an error. Although the child nodes of an entity reference are the expanded entity, the children cannot be modified. |
When elements are added as children to other elements, they introduce their own namespace scoping. That is, if the element is from a default namespace, the default has scope beginning with the element being added.
If an entity reference is being added as a child to an element or document fragment, the namespace declaration of the entity reference is added to the containing element.