// (gH) -_- domtrees.js ; TimeStamp (unix) : 04 Juin 2009 vers 14:50 // F. Permadi 2005. // (C) F. Permadi // Print DOM tree // This function traverses the DOM tree of an element and prints the tree. // This function called recursively until the DOM tree is fully traversed. // // Parameters: // - targetDocument is where the tree will be printed into // - currentElement is the element that we want to print // - depth is the depth of the current element // (it should be 1 for the initial element) // ############################################################### function sousArbreDom(currentElement, depth,attr) { // ############################################################### tdd = typeof(depth) ; if (tdd=="undefined") { depth = 1 } if (typeof(attr)=="undefined") { attr = 1 } rt = "" // initialisation de la chaine à renvoyer // ceci constitue le critère d'arret if (currentElement) { var tagName=currentElement.tagName; // on écrit la balise comme <a>, <img>, etc if (tagName) { if (depth>=1) { rt += "<"+currentElement.tagName.toLowerCase() // il faut maintenant récupérer les attributs non nuls de la balise if (attr==1) { attrs = "" nbac = currentElement.attributes.length if (nbac>0) { for (ida=0; ida<currentElement.attributes.length;ida++ ) { curn = currentElement.attributes[ida].name curv = currentElement.attributes[ida].value ok = 1 if (typeof(curv)=='undefined') { ok = 0 } if (curv=='null') { ok = 0 } if (!curv) { ok = 0 } if (curv==null) { ok = 0 } if (curv==0) { ok = 0 } if (curv=='') { ok = 0 } if (ok==1) { attrs += " " + curn + "='" + curv + "'"; } // fin si } // fin pour } // fin si rt += attrs } // fin si } // fin si } else { cv = currentElement.nodeValue rt += cv } // fin de si if (tagName) { if (depth>=1) { rt += ">" } // fin si // traversée récursive de l'arbre var indc=0; var enfant=0; var currentElementChild=currentElement.childNodes[indc]; while (currentElementChild) { // traversée récursive du sous-arbre du noeud enfant rt += sousArbreDom(currentElementChild, depth+1,attr); indc++; currentElementChild=currentElement.childNodes[indc]; } // fin de tant que // fermeture éventuelle de la balise if (tagName) { if (depth>=1) { rt += "</"+tagName.toLowerCase()+">"; } // fin si } // fin si } // fin si } // fin de si currentElement return( rt ) } // fin de fonction sousArbreDom // ############################################################### function sousArbreDomGraphique(currentElement, depth,attr) { // ############################################################### tdd = typeof(depth) if (tdd=="undefined") { depth = 1 } tda = typeof(attr) if (tda=="undefined") { attr = 1 } if (currentElement) { // ------------------------------------------------------------- var j; var tagName=currentElement.tagName; if (tagName) { ecrit_infos_sansrc("<"+currentElement.tagName.toLowerCase()); if (attr==1) { // il faut maintenant récupérer les attributs non nuls de la balise attrs = "" nbac = currentElement.attributes.length if (nbac>0) { for (ida=0; ida<currentElement.attributes.length;ida++ ) { curn = currentElement.attributes[ida].name curv = currentElement.attributes[ida].value ok = 1 if (typeof(curv)=='undefined') { ok = 0 } if (curv=='null') { ok = 0 } if (!curv) { ok = 0 } if (curv==null) { ok = 0 } if (curv==0) { ok = 0 } if (curv=='') { ok = 0 } if (ok==1) { attrs += " " + curn + "='" + curv + "'"; } // fin si } // fin pour ecrit_infos_sansrc(attrs); } // fin si } // fin si ecrit_infos_sansrc(">"); } else { // ==> ecrit_infos_sansrc("[unknown tag]") nv = currentElement.nodeValue; // ne pas afficher retour-charriot (code 10 mais [rc]) if (nv.charCodeAt(0)==10) { ecrit_infos_sansrc("[rc]") } else { ecrit_infos_sansrc(nv) } // fin si } ; // fin si // ---------------- partie récursive ----------------------- var i=0; var currentElementChild=currentElement.childNodes[i]; while (currentElementChild) { ecrit_infos_sansrc("\n"); for (j=0; j<depth; j++) { ecrit_infos_sansrc(" |"); } // fin pour if (tagName) { ecrit_infos_sansrc("--"); } // fin si sousArbreDomGraphique(currentElementChild, depth+1,attr); i++; currentElementChild=currentElement.childNodes[i]; } // fintant que // ------------------------------------------------------------- if (tagName) { if (depth>=1) { ecrit_infos_sansrc("\n"); for (j=0; j<depth-1; j++) { ecrit_infos_sansrc(" |"); } // fin pour if (depth>1) { ecrit_infos_sansrc(" "); } } // fin si ecrit_infos_sansrc("</"+tagName.toLowerCase()+">"); } // fin si currentElement=0; } // fin si } // fin de fonction sousArbreDomGraphique // ###############################################################
Retour à la page principale de (gH)