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

220
Vistas
Accediendo al contexto iframe con Electron

Tengo una aplicación Electron donde cargo sitios externos en un BrowswerView alojado en un BrowserWindow . Invariablemente, cada sitio tiene un reproductor de video usando una etiqueta <video> . Normalmente, puede acceder al DOM usando executeJavaScript y hacer cosas como esta:

 document.querySelectorAll('video').forEach(input => { input.pause() })

Esto pausaría todo el video en reproducción en el sitio. El problema es que un sitio molesto en particular carga el reproductor de video en un iframe que se encuentra en un subdominio diferente.

Introduzca CORS. No puedo acceder al contenedor de video sin presionar el temido Blocked a frame with origin "https://www.whatever.com" from accessing a cross-origin frame.

Aquí está mi pregunta: en las herramientas de desarrollo de Chrome, puede seleccionar el contexto de un menú desplegable tan claramente que es posible elegir el contexto del cliente. Mientras ejecuto esto en Electron, me gustaría creer que hay una forma de cambiar de contexto. No estoy buscando ejecutar el código de origen cruzado, sino directamente en el marco, solo necesito una forma de elegirlo.

Miré mainFrame.frames pero no veo cómo se llega a los contenidos web del marco webContents .

¿Alguna pista sobre esto?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Básicamente hice patito de goma con esta cosa. Después de escribir esto, lo descubrí. Volví a mirar los métodos de instancia y vi que executeJavascript es uno de ellos, por lo que no necesito acceder a webContents en absoluto...

Así que esto funciona y pensé en compartir:

 view.webContents.mainFrame.frames.forEach(frame => { const url = new URL(frame.url) if (url.host === 'sub.whatever.com') { frame.executeJavaScript('myCodeHere') } })

Usé el nombre de host en mi instancia, pero podría usar frame.processId en su lugar.

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