forked from GNUsocial/gnu-social
47 lines
1.6 KiB
JavaScript
47 lines
1.6 KiB
JavaScript
|
/* is this stuff defined? */
|
||
|
if (!document.ELEMENT_NODE) {
|
||
|
document.ELEMENT_NODE = 1;
|
||
|
document.ATTRIBUTE_NODE = 2;
|
||
|
document.TEXT_NODE = 3;
|
||
|
document.CDATA_SECTION_NODE = 4;
|
||
|
document.ENTITY_REFERENCE_NODE = 5;
|
||
|
document.ENTITY_NODE = 6;
|
||
|
document.PROCESSING_INSTRUCTION_NODE = 7;
|
||
|
document.COMMENT_NODE = 8;
|
||
|
document.DOCUMENT_NODE = 9;
|
||
|
document.DOCUMENT_TYPE_NODE = 10;
|
||
|
document.DOCUMENT_FRAGMENT_NODE = 11;
|
||
|
document.NOTATION_NODE = 12;
|
||
|
}
|
||
|
|
||
|
document._importNode = function(node, allChildren) {
|
||
|
/* find the node type to import */
|
||
|
switch (node.nodeType) {
|
||
|
case document.ELEMENT_NODE:
|
||
|
/* create a new element */
|
||
|
var newNode = document.createElement(node.nodeName);
|
||
|
/* does the node have any attributes to add? */
|
||
|
if (node.attributes && node.attributes.length > 0)
|
||
|
/* add all of the attributes */
|
||
|
for (var i = 0, il = node.attributes.length; i < il;) {
|
||
|
if (node.attributes[i].nodeName == 'class') {
|
||
|
newNode.className = node.getAttribute(node.attributes[i++].nodeName);
|
||
|
} else {
|
||
|
newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName));
|
||
|
}
|
||
|
}
|
||
|
/* are we going after children too, and does the node have any? */
|
||
|
if (allChildren && node.childNodes && node.childNodes.length > 0)
|
||
|
/* recursively get all of the child nodes */
|
||
|
for (var i = 0, il = node.childNodes.length; i < il;)
|
||
|
newNode.appendChild(document._importNode(node.childNodes[i++], allChildren));
|
||
|
return newNode;
|
||
|
break;
|
||
|
case document.TEXT_NODE:
|
||
|
case document.CDATA_SECTION_NODE:
|
||
|
case document.COMMENT_NODE:
|
||
|
return document.createTextNode(node.nodeValue);
|
||
|
break;
|
||
|
}
|
||
|
};
|