Estoy usando una extensión de Chrome para inyectar páginas web como iframes dentro de una de las páginas internas de mi extensión.
Eliminando los encabezados de origen cruzado de los iframes, por lo que se muestran bien.
Y configurando el campo "all_frames": true en el manifiesto de la extensión , lo que permite que mi script de contenido se inyecte en todas las páginas y los iframes dentro de ellas también.
"content_scripts": [ { "matches": [ "<all_urls>" ], "all_frames": true, //<------ "run_at": "document_idle", "js": [ "js/content-script.js" ] } ],Esto inyecta mi secuencia de comandos de contenido en TODOS los iframes dentro de las páginas web (algunos sitios web ya tienen iframes, por lo que aquí tenemos una situación de iframes anidados).
Necesito intercambiar mensajes solo con el iframe de nivel superior. No me importan los iframes de niños anidados dentro de la página.
Traté de detectar la ventana principal de esta manera:
if (window !== window.top) { console.console('iframe'); } else { console.console('NOT iframe'); } Pero siempre es iframe porque, bueno, estoy inyectando la página web de nivel superior como un iframe dentro de mi extensión.
¿Cómo puedo detectar solo el iframe de nivel superior?
Entonces, si este es el caso ahora:
<iframe name="1"> <iframe name="2"> <iframe name="3"></iframe> </iframe> </iframe>¿Cómo puedo detectar si este script se está ejecutando dentro del iframe #2?