Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
Elemento de búsqueda en página completa incluyendo marcos internos

Actualmente estoy tratando de programar una extensión de navegador para la intranet de la empresa en la que trabajo, para esto necesito obtener diferentes elementos HTML a través de JavaScript, y me gustaría tener una función general para esto, ya que muchos de estos elementos están en marcos (¡no iframes!) que están en un conjunto de marcos. He estado buscando en Google durante 2 horas y no he encontrado una solución que funcione. Entre otras cosas, ya lo probé a través de window.frameElement.contentDocument, que funciona en el inspector de HTML, pero da un error en el script de que ese elemento supuestamente no existe, además, esta función no es exactamente aplicable en general... ¿Hay alguien aquí que haya escrito tal función por casualidad? Necesito una solución simple de JavaScript. Todos los marcos de la página pertenecen al mismo dominio.

Esto es lo que tenía hasta ahora (no funciona):

 function findInAll(selector) { let result = []; let search = getAllElements(); result.push(document.querySelectorAll(selector)); // loop through all search elements for (let i = 0; i < search.length; i++) { // if element matches selector if (search[i].elements[0].matches(selector)) { // push element to result result.push(search[i]); } } return result; } function getAllElements(parent = document) { let all = parent.getElementsByTagName("*"); let elements = []; for (let i = 0; i < all.length; i++) { elements.push(all[i]); if ( all[i].tagName == "IFRAME" || all[i].tagName == "FRAME" || all[i].tagName == "FRAMESET" ) { elements.push(getAllElements(all[i])); } } return elements; }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estaba pensando demasiado complicado... Aparentemente, también debería volver a pensar en mis habilidades en inglés que no he llegado a esta formulación de pregunta, pero ahora gracias a esta respuesta podría escribir una función propia:

 function findElement(selector, start = window) { var el = start.document.querySelectorAll(selector); let result = null; if (el.length > 0) { for (var i = 0; i < el.length; i++) { return el[i]; } } for (var i = 0; i < start.frames.length; i++) { result = findElement(selector, start.frames[i].window); if(result != null) { break; } } return result; } function findElements(selector, start = window) { let result = []; var el = start.document.querySelectorAll(selector); if (el.length > 0) { for (var i = 0; i < el.length; i++) { result.push(el[i]); } } for (var i = 0; i < start.frames.length; i++) { let found = findElement(selector, start.frames[i].window); if (found.length > 0) { for (var j = 0; j < found.length; j++) { result.push(found[j]); } } } return result; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda