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.
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:
Firefox a un fonctionnalité similaire en cours de développement:
Vous pouvez également naviguer entre les cadres en utilisant la ligne de commande :
var frame = document.getElementById("frame1").contentWindow;
cd(frame);
Vous pouvez exécuter du code dans <iframe>
s en utilisant le window.frames[x]
fonctionnalité. Par exemple,
window.frames[0].runFunction()
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:
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.
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
cd(document.getElementsByTagName('iframe')[0]);