Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

190
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda