Chciałbym zmienić kontekst javascript wykonywanego w narzędziu programistycznym webkit / konsoli firebug, aby wykonywał jego kod tak, jakby był uruchamiany z wnętrza elementu iframe na stronie.
Wiem, że mógłbym to zrobić, otwierając stronę w ramce iframe na oddzielnej stronie, ale chcę uruchomić kod, w którym współdziała z ramką nadrzędną.
javascript
iframe
console
firebug
Muhd
źródło
źródło
window.frames[x]
modny sposób. Po prostu dołącz dowolne polecenie. IEwindow.frames[0].runFunction()
Odpowiedzi:
Chrome 15 umożliwia zmianę zakresu konsoli. W dolnej części konsoli, obok przycisku czyszczenia konsoli, znajduje się menu, które mówi,
<top frame>
które wyświetli listę dostępnych ramek:Firefox ma podobną funkcję, która jest obecnie w fazie rozwoju:
Możesz także nawigować po ramkach za pomocą wiersza poleceń :
źródło
Możesz wykonać kod w
<iframe>
s za pomocąwindow.frames[x]
funkcji. Na przykład,źródło
window.frames[0].alert()
W dzisiejszej przeglądarce Chrome (wersja 52) wszystko, co musisz zrobić, to wybrać element iframe na karcie „Elementy” narzędzi programistycznych. Wszystko, co uruchomisz w konsoli JS, zostanie automatycznie uruchomione w kontekście wybranego elementu iframe.
Na przykład tutaj wybrałem iframe, a kiedy piszę
document.location.pathname
w konsoli, zwraca atrybut src elementu iframe, zamiast adresu URL z paska adresu:źródło
W przypadku rozwiązania firebug zobacz tę odpowiedź na inne pytanie SO. Nie działa jednak między domenami, tak jak rozwiązanie Dennisa Chrome.
Edycja: w nowszych wersjach programu firebug mógł rozwiązać problem między domenami.
źródło
Wykonywanie 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 () Wywołanie cd () bez parametrów powoduje powrót do okna najwyższego poziomu.
cd (okno) Umożliwia zmianę obliczania wyrażenia wiersza polecenia z domyślnego okna najwyższego poziomu strony internetowej na okno ramki.
Więcej informacji tutaj
źródło
źródło