Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

185
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!