Есть ли способ изменить контекст на iframe в javascript-консоли?
Я хотел бы изменить контекст javascript, выполненный в консоли разработчика /firebug webkit, чтобы выполнить его код, например, он запускается изнутри iframe на странице.
Я знаю, что могу сделать это, открыв страницу в iframe на отдельной странице, но я хочу запустить код, где он взаимодействует с родительским фреймом.
Ответы
Ответ 1
Chrome 15 позволяет вам изменять область действия консоли. В нижней части консоли рядом с кнопкой прозрачной консоли есть меню, в котором указано <top frame>
, которое предоставит список доступных кадров:
![enter image description here]()
В Firefox есть аналогичная функция, находящаяся в разработке:
![enter image description here]()
Вы также можете перемещаться по рамкам с помощью командной строки:
var frame = document.getElementById("frame1").contentWindow;
cd(frame);
Ответ 2
Вы можете выполнить код в <iframe>
с помощью функции window.frames[x]
. Например,
window.frames[0].runFunction()
Ответ 3
В настоящее время Chrome (версия 52) все, что вам нужно сделать, это выбрать iframe на вкладке "Элементы" инструментов dev. Все, что вы запускаете в консоли JS, будет автоматически запускаться в контексте выбранного iframe.
Например, здесь я выбрал iframe, и когда я набираю document.location.pathname
в консоли, он возвращает атрибут src iframe, а не URL-адрес из адресной строки:
![введите описание изображения здесь]()
Ответ 4
Для решения firebug см. этот ответ по другому вопросу SO. Однако не работает кросс-домен, например, решение Dennis Chrome.
Изменить: с более новыми версиями firebug у них может быть проблема с междоменным доступом.
Ответ 5
Выполнение операторов и команд script по умолчанию выполняется в контексте окна верхнего уровня. Если вы используете фреймы, используйте консольную команду "cd()".
кд()
Вызов cd() без параметров возвращается в окно верхнего уровня.
CD (окно)
Позволяет изменить оценку выражения командной строки из окна верхнего уровня по умолчанию веб-страницы в окно кадра.
Дополнительная информация, здесь
Ответ 6
cd(document.getElementsByTagName('iframe')[0]);