Chciałbym zmienić kontekst JavaScript wykonywany w konsoli Webkit Developer Tool / Firebug, aby wykonać jego kod, taki jak biegnie od wewnątrz iframe na stronie.

Wiem, że mogę to zrobić, otwierając stronę w programie IFrame na osobnej stronie, ale chcę uruchomić kod, w którym współdziała z ramą nadrzędną.

109
Muhd 1 listopad 2011, 04:22

6 odpowiedzi

Najlepsza odpowiedź

Chrome 15 umożliwia zmianę zakresu konsoli. Na dole konsoli, obok przycisku Clear Console, istnieje menu, które mówi <top frame>, który poda listę dostępnych ramek:

enter image description here

Firefox ma Podobna funkcja obecnie w rozwoju:

enter image description here


Możesz także nawigować o ramkach za pomocą linii poleceń:

var frame = document.getElementById("frame1").contentWindow;
cd(frame);
151
Community 8 luty 2017, 14:33

Możesz wykonać kod w <iframe> s przy użyciu funkcjonalności window.frames[x]. Na przykład,

window.frames[0].runFunction()
22
rink.attendant.6 8 lipiec 2015, 19:28

W dzisiejszym chromie (wersja 52), wszystko, co musisz zrobić, to wybrać iframe w zakładce "Elements" na narzędzia Dev. Wszystko, co uruchamiasz w konsoli JS automatycznie uruchomi się w kontekście wybranej iframe.

Na przykład, tutaj wybrałem iframe, a kiedy wpiszę document.location.pathname do konsoli zwróci atrybut SRC IFrame, zamiast adresu URL z paska adresu:

enter image description here

6
dpercy 11 sierpień 2016, 18:31

Dla rozwiązania Firebug zobacz Ta odpowiedź na innym pytaniu . Nie działa jednak w dziedzinie Cross-Domain, takich jak Dennisa Chrome Solution.

Edytuj: Z nowszymi wersjami Firebug mogą mieć stały problem z domeniem.

4
Community 23 maj 2017, 12:10

Wykonanie instrukcji i poleceń skryptów domyślnie odbywa się w kontekście okna najwyższego poziomu. Jeśli używasz ramek, użyj polecenia konsoli "CD ()".

CD () Dzwonienie CD () bez parametrów powraca do okna najwyższego poziomu.

CD (okno) Umożliwia zmianę oceny ekspresji wiersza poleceń z domyślnego okna najwyższego poziomu strony do okna ramy.

Więcej informacji, Tutaj .

4
Sebastian 3 grudzień 2013, 14:34
cd(document.getElementsByTagName('iframe')[0]);
4
SuperBiasedMan 2 wrzesień 2015, 13:35