web-dev-qa-db-fra.com

Existe-t-il un moyen de changer le contexte en iframe dans la console javascript?

Je voudrais changer le contexte du javascript exécuté dans la console webkit developer tool/firebug pour exécuter son code comme s'il fonctionnait à l'intérieur d'un iframe sur la page.

Je sais que je pourrais le faire en ouvrant la page de l'iframe sur une page distincte, mais je souhaite exécuter du code dans lequel il interagit avec le cadre parent.

102
Muhd

Chrome 15 vous permet de modifier l'étendue de la console. En bas de la console, à côté du bouton d'effacement de la console, vous trouverez un menu indiquant <top frame> qui donnera une liste des cadres disponibles:

enter image description here

Firefox a un fonctionnalité similaire en cours de développement:

enter image description here


Vous pouvez également naviguer entre les cadres en utilisant la ligne de commande :

var frame = document.getElementById("frame1").contentWindow;
cd(frame);
141
Dennis

Vous pouvez exécuter du code dans <iframe>s en utilisant le window.frames[x] fonctionnalité. Par exemple,

window.frames[0].runFunction()
21
LoveAndCoding

Dans la version Chrome (version 52) d'aujourd'hui, il vous suffit de sélectionner l'iframe dans l'onglet "Éléments" des outils de développement. Tout ce que vous exécutez dans la console JS sera automatiquement exécuté dans le contexte. de l'iframe sélectionné.

Par exemple, ici, j'ai sélectionné un iframe et quand je tape document.location.pathname dans la console, il renvoie l'attribut src de l'iframe, au lieu de l'URL de la barre d'adresse:

enter image description here

6
dpercy

Pour la solution firebug, voir cette réponse sur une autre SO question. Ne fonctionne pas entre domaines comme la solution de Dennis Chrome).

Edit: Avec les versions plus récentes de Firebug, ils peuvent avoir un problème de domaine croisé fixe.

4
Muhd

L'exécution des instructions de script et des commandes par défaut est effectuée dans le contexte de la fenêtre de niveau supérieur. Si vous utilisez des cadres, utilisez la commande de console "cd ()".

cd () L'appel de cd () sans paramètre renvoie à la fenêtre de niveau supérieur.

cd (window) Vous permet de modifier l'évaluation de l'expression en ligne de commande de la fenêtre de niveau supérieur par défaut de la page Web en fenêtre d'un cadre.

Plus d'infos, ici

3
Sebastian
cd(document.getElementsByTagName('iframe')[0]);
3
Andreyka Bonart