Estoy tratando de ejecutar javascript dentro de un iframe después de que se carga y tengo problemas. No estoy seguro si significa que mi concepto de lo que está sucediendo es incorrecto o si mi código simplemente es incorrecto.
Lo que quiero hacer es cargar un archivo javascript en el entorno iframe y luego llamar a una función. (los contenidos de iframe son páginas web estáticas capturadas con un solo archivo y servidas desde mi servidor. Quiero poder abrir menús emergentes para las imágenes en la página de iframe). ¿Es esto posible, o está bloqueado por consideraciones de seguridad? Puedo obtener el contentDocument del iframe y ver lo que contiene, pero no realizar ningún cambio. Agregar un detector de eventos de carga al iframe se ejecuta en el DOM de nivel superior, no en el iframe.
Una solución fea sería agregar una línea cargando el script a cada uno de mis archivos html servidos, pero soy reacio a hacerlo ya que parece un poco frágil. ¿Es esa mi única opción?
puede seleccionar el elemento iframe y acceder a su objeto de ventana interna. para hacer esto, primero asigne una identificación a su elemento iframe
<iframe id="chosen-iframe" ...></iframe>y para acceder a la ventana use lo siguiente
const iframe = document.getElementById('chosen-iframe'); const iFrameWindowElement = iframe.contentWindow;y con acceso a la ventana, puede crear una etiqueta de secuencia de comandos que contenga la secuencia de comandos que desea inyectar dentro del iframe
var injectedScript = iFrameWindowElement.document.createElement("script"); injectedScript.append(...); iFrameWindowElement.document.documentElement.appendChild(script);