diff options
author | csarven <csarven@controlyourself.ca> | 2008-11-14 22:35:49 -0500 |
---|---|---|
committer | csarven <csarven@controlyourself.ca> | 2008-11-14 22:35:49 -0500 |
commit | 322a79739dbee9f5a9bb4e012cd75a3d034a8bad (patch) | |
tree | 67f0eb5589f27d5a7c0af607028e0f55b630e9b1 /js/xbImportNode.js | |
parent | 6a02f5d3c2b2ffc93619a0e7c6e07ecc05be9909 (diff) |
trac670 trac689 Favorites (duplicate id, background image, JavaScript)
darcs-hash:20081115033549-eefa4-cfbca6f9c723aa63869c39d6851de7a7803f0703.gz
Diffstat (limited to 'js/xbImportNode.js')
-rw-r--r-- | js/xbImportNode.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/js/xbImportNode.js b/js/xbImportNode.js new file mode 100644 index 000000000..4ba332a68 --- /dev/null +++ b/js/xbImportNode.js @@ -0,0 +1,46 @@ +/* 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; + } +};
\ No newline at end of file |