Skip to content

jimmy-collazos/deep-tree-walker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tree Social Media Photo by Stanislav Kondratiev on Unsplash

Deep Tree Walker

Formato de exportación: UMD, CJS, ESM Distribución: Npm, Unpackage Licencia: GPL 3.0

Uso

Esta herramienta se exporta en los formatos CommonJs, IFFIE, ESM. Puedes descargarlo o instalarlo a través de NPM o desde Unpkg.

Npm

npm install --save deep-tree-walker

Unpkg

import {createDeepTreeWalkerIterator} from 'https://unpkg.com/deep-tree-walker?module'

# createDeepTreeWalkerIterator()

Esta función permite recorrer por todos los elementos del DOM, examentamente igual que TreeWalker con el añadido que también accede a los elmenentos del Shadow Tree.

El recorrido de los nodos se realiza siguiendo el esquema de Busqueda en anchura (anchura-primero). Además la ejecución es perezosa; para mejorar el rendimiento; por lo que se expone un iterador para ir recorriendo el DOM según la necesidad.

Sintaxis

createDeepTreeWalkerIterator(nodeRoot, [whatToShow[, filter]]);

Parámentros

  • nodeRoot: Nodo raíz a partir del cual se comienza a explorar
  • whatToShow (opcional): Es un valod de tipo unsigned long que se utilizar para especesifivar el típo de nodos que se quiere recorrer (ver especificación). El valor por defecto es NodeFilter.SHOW_ELEMENT
  • filter (opcional): Objeto con la interfáz de NodeFilter

Valor devuelto

Devuelve un nuevo objeto iterador

Ejemplo

<div id="box">
  <my-component><my-component> <!-- CustomElement con ShadowDom -->
  <a href="#">link</a>
</div>
<script type="module">
  import {createDeepTreeWalkerIterator} from 'deep-tree-walker-iterator';

  let gen;
  const root = document.querySelector('#box');
  // Uso básico
  gen = createDeepTreeWalkerIterator(root);
  console.group('Uso básico');
  console.log(gen.next().value); // <my-component><my-component>
  console.log(gen.next().value); // <a href="#"></a>
  console.log(gen.next().value); // undefined
  console.groupEnd();

  // filtrando por el tipo de nodo
  gen = createDeepTreeWalkerIterator(root, NodeFilter.SHOW_COMMENT);
  console.group('filtrando por el tipo de nodo');
  console.log(gen.next().value); // <!-- CustomElement con ShadowDom -->
  console.log(gen.next().value); // undefined
  console.groupEnd();

  // filtrando usando una función propia
  gen = createDeepTreeWalkerIterator(root, NodeFilter.SHOW_ELEMENT, (node) => 
      node.tagName === 'A' ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);
  console.group('filtrando usando una función propia');
  console.log(gen.next().value); // <a href="#"></a>
  console.log(gen.next().value); // undefined
  console.groupEnd();
</script>

Enlaces de Interes

About

Recorrer el DOM y el Shadow DOM

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published