Есть ли способ изменить контекст на iframe в консоли javascript? - PullRequest
100 голосов
/ 01 ноября 2011

Я хотел бы изменить контекст javascript, выполняемого в инструменте разработчика webkit / консоли firebug, чтобы он выполнял свой код, как будто он выполняется изнутри iframe на странице.

Я знаю, что мог бы сделать это, открыв страницу в iframe на отдельной странице, но я хочу запустить код там, где он взаимодействует с родительским фреймом.

Ответы [ 6 ]

139 голосов
/ 01 ноября 2011

Chrome 15 позволяет менять область действия консоли.В нижней части консоли, рядом с кнопкой очистки консоли, есть меню с надписью <top frame>, которое выдаст список доступных фреймов:

enter image description here

Firefox имеет аналогичная функция в настоящее время в разработке:

enter image description here


Вы также можете перемещаться по кадрам с помощью командной строки :

var frame = document.getElementById("frame1").contentWindow;
cd(frame);
20 голосов
/ 01 ноября 2011

Вы можете выполнить код за <iframe> с, используя функциональность window.frames[x]. Например,

window.frames[0].runFunction()
6 голосов
/ 11 августа 2016

В сегодняшнем Chrome (версия 52) все, что вам нужно сделать, это выбрать iframe на вкладке «Элементы» инструментов dev.Все, что вы запускаете в консоли JS, автоматически запускается в контексте выбранного iframe.

Например, здесь я выбрал iframe, а когда я набираю document.location.pathname в консоли, он возвращает атрибут srciframe вместо URL из адресной строки:

enter image description here

4 голосов
/ 01 ноября 2011

Для решения проблемы с firebug см. этот ответ на другой вопрос SO. Однако не работает кросс-домен, как решение Dennis's Chrome.

Редактировать: В более новых версиях firebug они могли исправить междоменную проблему.

3 голосов
/ 02 сентября 2015
cd(document.getElementsByTagName('iframe')[0]);
3 голосов
/ 03 декабря 2013

Выполнение операторов и команд скрипта по умолчанию выполняется в контексте окна верхнего уровня. Если вы используете фреймы, используйте консольную команду "cd ()".

CD () Вызов cd () без параметров возвращает в окно верхнего уровня.

CD (окно) Позволяет изменить оценку выражения командной строки из окна верхнего уровня по умолчанию веб-страницы на окно фрейма.

Подробнее, здесь

...