Depuración de iframes con Chrome herramientas para desarrolladores
Me gustaría utilizar la consola de desarrolladores de Chrome para ver las variables y elementos DOM en mi aplicación, pero la aplicación existe dentro de un iframe
(ya que es una aplicación OpenSocial).
Así que la situación es:
<containing site>
<iframe id='foo' src='different domain'>
... my app ...
</iframe>
</containing site>
¿Hay alguna forma de acceder a las cosas que suceden en ese iframe
desde la consola del desarrollador? Si trato de hacer document.getElementById("foo").something
, no funciona, probablemente porque el iframe
está en un dominio diferente.
No puedo abrir el contenido de iframe
en una nueva pestaña, porque el iframe
necesita poder hablar al sitio que contiene también.
4 answers
En las Herramientas para desarrolladores en Chrome, hay una barra en la parte superior, llamada Execution Context Selector
(h/t felipe-sabino), justo debajo de los Elementos, Red, Fuentes... pestañas, que cambian dependiendo del contexto de la pestaña actual. Cuando en la pestaña Consola hay un menú desplegable en esa barra que le permite seleccionar el contexto del marco en el que funcionará la Consola. Seleccione su marco en este menú desplegable y se encontrará en el contexto de marco apropiado. : D
Cromo v59
Chrome v33
Chrome v32 & lower
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-29 17:39:57
Actualmente, la evaluación en la consola se realiza en el contexto del marco principal de la página y se adhiere a la misma directiva de origen cruzado que el propio marco principal. Esto significa que no puede acceder a los elementos del iframe a menos que el marco principal pueda hacerlo. Sin embargo, puede establecer puntos de interrupción y depurar su código utilizando el panel Scripts.
Actualizar: Esto ya no es cierto. Ver Respuesta de Metagrapher.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:01
En mi escenario bastante complejo la respuesta aceptada de cómo hacer esto en Chrome no funciona para mí. Es posible que desee probar el depurador de Firefox en su lugar (parte de las herramientas para desarrolladores de Firefox), que muestra todas las 'Fuentes', incluidas las que forman parte de un iFrame
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-05 01:13:08
Cuando el iFrame apunta a tu sitio de esta manera:
<html>
<head>
<script type="text/javascript" src="/jquery.js"></script>
</head>
<body>
<iframe id="my_frame" src="/wherev"></iframe>
</body>
</html>
Puedes acceder a iFrame DOM a través de este tipo de cosas.
var iframeBody = $(window.my_frame.document.getElementsByTagName("body")[0]);
iframeBody.append($("<h1/>").html("Hello world!"));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-20 16:24:21