Valid XHTML     Valid CSS2    


        //    (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 gH    Retour à la page principale de   (gH)