Gibt es eine Möglichkeit, den Kontext in der Javascript-Konsole in Iframe zu ändern?

Lesezeit: 3 Minuten

Ich möchte den Kontext des in der Webkit-Entwicklertool-/Firebug-Konsole ausgeführten Javascripts ändern, um seinen Code so auszuführen, als würde er in einem Iframe auf der Seite ausgeführt.

Ich weiß, dass ich dies tun könnte, indem ich die Seite im Iframe auf einer separaten Seite öffne, aber ich möchte Code dort ausführen, wo er mit dem übergeordneten Frame interagiert.

  • Sie können immer Code in der ausführen window.frames[x] Mode. Hängen Sie einfach den gewünschten Befehl an. IE window.frames[0].runFunction()

    – LoveAndCoding

    1. November 2011 um 0:30 Uhr


  • @Ktash, möchtest du vielleicht darauf eine Antwort geben?

    – Muhd

    1. November 2011 um 1:18 Uhr

  • Wie kann ich dasselbe im IE tun? Ich finde es extrem schwierig, ein Element im Konsolenfenster mit $ auszuwählen, wenn sich das Element in einem inneren IFRAME befindet. Bitte helfen Sie.

    – tarekahf

    26. Mai 2017 um 15:59 Uhr

Benutzer-Avatar
Dennis

Mit Chrome 15 können Sie den Bereich der Konsole ändern. Auf der Unterseite der Konsole, neben der Schaltfläche zum Löschen der Konsole, befindet sich ein Menü mit der Aufschrift <top frame> was eine Liste der verfügbaren Frames geben wird:

Geben Sie hier die Bildbeschreibung ein

Firefox hat eine ähnliche Funktion derzeit in Entwicklung:

Geben Sie hier die Bildbeschreibung ein


Sie können auch über Rahmen hinweg navigieren über die Kommandozeile:

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

  • Kann ich Code in der Konsole ausführen, um dasselbe zu erreichen, oder muss ich auf die Frame-Auswahl klicken?

    – bodine

    7. August 2013 um 23:25 Uhr

  • @bodine – haben Sie einen Weg gefunden, dies über den Konsolenbefehl zu erreichen?

    – künstlerisch

    11. Februar 2014 um 11:58 Uhr


  • Beachten Sie, dass sich dieses Dropdown-Menü jetzt oben in der Konsole befindet und nicht mehr unten.

    – Muhd

    8. Mai 2014 um 18:51 Uhr

  • Ich sehe das nicht in Chrome 38. Konnte nicht schnell herausfinden, wie man das in Chrome macht; benutzte die cd (frames[<index number>]) stattdessen in Firefox.

    – Akrikos

    30. Oktober 2014 um 14:51 Uhr

  • Schade. Der ausgewählte Rahmen wird nicht beibehalten, wenn der Inhalt des Rahmens geändert wird. Es schaltet zurück auf “Top Frame”

    – Bryc

    1. April 2015 um 3:07 Uhr


Benutzer-Avatar
Liebe und Codierung

Sie können Code in ausführen <iframe>s durch die Verwendung von window.frames[x] Funktionalität. Zum Beispiel,

window.frames[0].runFunction()

  • Eine schöne Alternative, wenn FireBug Ihre bevorzugte Waffe ist. Vielen Dank.

    – Surreale Träume

    18. April 2012 um 2:20 Uhr

  • Wie würden Sie Code außerhalb von Funktionen wie jQuery-Befehlen ausführen? Oder wenn Sie einen Verweis auf ein DOM-Element unter einem Frame erhalten möchten, dann führen Sie Code für dieses Element aus?

    – David

    12. Mai 2014 um 22:21 Uhr

  • Als Beispiel wäre also: window.frames[0].alert()

    – Schajan

    8. Dezember 2019 um 15:58 Uhr

In der heutigen Version von Chrome (Version 52) müssen Sie lediglich den Iframe im Tab „Elements“ der Dev-Tools auswählen. Alles, was Sie in der JS-Konsole ausführen, wird automatisch im Kontext des ausgewählten Iframes ausgeführt.

Hier habe ich beispielsweise einen Iframe ausgewählt, und wenn ich tippe document.location.pathname In der Konsole gibt es das src-Attribut des Iframes anstelle der URL aus der Adressleiste zurück:

Geben Sie hier die Bildbeschreibung ein

Benutzer-Avatar
Muhd

Eine Firebug-Lösung finden Sie in dieser Antwort auf eine andere SO-Frage. Funktioniert jedoch nicht domänenübergreifend wie die Chrome-Lösung von Dennis.

Bearbeiten: Mit neueren Versionen von Firebug haben sie möglicherweise ein domänenübergreifendes Problem behoben.

Die Ausführung von Skriptanweisungen und Befehlen erfolgt standardmäßig im Kontext des Fensters der obersten Ebene. Wenn Sie Frames verwenden, verwenden Sie den Konsolenbefehl “cd()”.

CD()
Der Aufruf von cd() ohne Parameter kehrt zum Fenster der obersten Ebene zurück.

CD (Fenster)
Ermöglicht es Ihnen, die Auswertung von Befehlszeilenausdrücken vom Standardfenster der obersten Ebene der Webseite in das Fenster eines Frames zu ändern.

Mehr Info, hier

  • Es ist genau das, wonach ich gesucht habe. (es funktioniert in Firefox) Danke.

    – Benutzer2410595

    8. Juli 2014 um 16:54 Uhr

Benutzer-Avatar
SuperBiasedMan

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

  • Es ist genau das, wonach ich gesucht habe. (es funktioniert in Firefox) Danke.

    – Benutzer2410595

    8. Juli 2014 um 16:54 Uhr

Benutzer-Avatar
Kai – Kazuya Ito

Für Leute, die Firefox verwenden, cd() funktioniert nicht.

Stattdessen besteht eine mögliche Problemumgehung darin, eval() im contentWindow des iframe aufzurufen, um Javascript im Kontext des iframe auszuführen.

var frame = document.getElementById("MyIframe").contentWindow;
frame.eval("alert(1);");

1229650cookie-checkGibt es eine Möglichkeit, den Kontext in der Javascript-Konsole in Iframe zu ändern?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy