Есть ли способ изменить контекст на iframe в консоли javascript?



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



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

874   6  

6 ответов:

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

enter image description here

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

enter image description here


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

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

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

window.frames[0].runFunction()

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

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

enter image description here

для решения firebug см. ответ по другому так вопросу. Однако не работает кросс-домен, как решение Chrome Денниса.

Edit: с новыми версиями firebug они, возможно, исправили междоменную проблему.

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

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

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

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

cd(document.getElementsByTagName('iframe')[0]);

Comments

    Ничего не найдено.