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
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:
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
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:
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.
Es ist genau das, wonach ich gesucht habe. (es funktioniert in Firefox) Danke.
– Benutzer2410595
8. Juli 2014 um 16:54 Uhr
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
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);");
12296500cookie-checkGibt es eine Möglichkeit, den Kontext in der Javascript-Konsole in Iframe zu ändern?yes
Sie können immer Code in der ausführen
window.frames[x]
Mode. Hängen Sie einfach den gewünschten Befehl an. IEwindow.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