¿Hay alguna manera de cambiar el contexto a iframe en la consola de JavaScript?
console firebug (6)
Chrome 15 le permite cambiar el alcance de la consola. En la parte inferior de la consola, junto al botón Borrar consola, hay un menú que dice <top frame>
que proporcionará una lista de marcos disponibles:
Firefox tiene una característica similar actualmente en desarrollo:
También puede navegar por cuadros usando la línea de comando :
var frame = document.getElementById("frame1").contentWindow;
cd(frame);
Me gustaría cambiar el contexto del javascript ejecutado en la herramienta de desarrollador webkit / firebug console para ejecutar su código como si se ejecutara desde dentro de un iframe en la página.
Sé que podría hacer esto abriendo la página en el iframe en una página separada, pero quiero ejecutar el código donde interactúa con el marco principal.
En Chrome de hoy (versión 52), todo lo que tiene que hacer es seleccionar el iframe en la pestaña "Elementos" de las herramientas de desarrollo. Todo lo que ejecute en la consola JS se ejecutará automáticamente en el contexto del iframe seleccionado.
Por ejemplo, aquí he seleccionado un iframe, y cuando escribo document.location.pathname
en la consola, devuelve el atributo src del iframe, en lugar de la URL de la barra de direcciones:
La ejecución de sentencias y comandos de script por defecto se realiza en el contexto de la ventana de nivel superior. Si está utilizando marcos, use el comando de la consola "cd ()".
cd () La llamada a cd () sin parámetros vuelve a la ventana de nivel superior.
cd (ventana) Le permite cambiar la evaluación de la expresión de la línea de comandos desde la ventana predeterminada de nivel superior de la página web a la ventana de un marco.
Más información, here
Para la solución Firebug, vea esta respuesta en otra pregunta SO. Sin embargo, no funciona de forma cruzada como la solución de Chrome de Dennis.
Editar: con las versiones más recientes de firebug, es posible que hayan solucionado un problema entre dominios.
Puede ejecutar código en <iframe>
s utilizando la funcionalidad window.frames[x]
. Por ejemplo,
window.frames[0].runFunction()
cd(document.getElementsByTagName(''iframe'')[0]);