Change the context of the Safari 6 console to an iframe on the page
Asked Answered
L

3

9

I know that Chrome let's you pick the context for the console's execution with a dropdown menu and that Firebug let's you cd() into an iframe. I can't figure out how to change the context in Safari's console. Does anyone know how to do this?

Lodhia answered 19/2, 2013 at 16:41 Comment(0)
M
9

Safari, unlike chrome and firefox, has no real support for this functionality and the only option seems to be to access the window object from the console. As you correctly point this will trigger cross domain policy issues, however provided you're running on mac (this does not work for some reason on windows) you can use

open -a '/Applications/Safari.app' --args --disable-web-security

to bypass this. And next on your jsbin you could use something along the lines of

window.frames[0]

to access the window of the page. As far as I can see there is no similar solution for windows, as

Safari.exe --disable-web-security

apparantly does not work.

Metallo answered 6/3, 2013 at 9:16 Comment(0)
C
0

The Iframe element itself is of Type Window within Console

<iframe id="frame" src="about:blank"/>

In Safari console then you simply work with

frame.document.write('bla');

please notice that 'frame' is shorthand for document.getElementById('frame')

Concelebrate answered 20/2, 2013 at 16:30 Comment(9)
Unfortunately that does not work with iframes with a different domain than the host page. That's why the firebug cd command and the Chrome drop down menu for changing "contexts" are so useful...Lodhia
Sure? I tried this with a different URL and it worked. Only for posting I changed this to about:blank.Concelebrate
Yup: jsbin.com/ojiley/2 -- when I open the Safari console and type: document.getElementById("test-iframe").document I get undefined: cl.ly/image/0N0v1l223w1mLodhia
try document.getElementById("test-iframe").contentDocument or document.getElementById("test-iframe").contentWindow. additionally you can print all parts of the frame to the console: for(var key in document.getElementById("test-iframe")) console.log(key);in order to find all useful attributes.Concelebrate
Nope, I still cannot access anything within the iframe. Are you sure you're using Safari 6.x?Lodhia
Yes of course. Safari 6 on OS X Mountain Lion. And i tried them and i had access to the document object of the iframe.Concelebrate
Hmm @Concelebrate can you tell me what code you've type into the Safari Web Inspector console to be able to access a dom element on the Amazon.com page in the iframe?Lodhia
here's the screenshot imageshack.us/photo/my-images/833/bildschirmfoto20130221u.pngConcelebrate
let us continue this discussion in chatLodhia
S
0

As of the time of this writing (July 2024), you can change iframe contexts in Safari via the tiny dropdown button next to the console input in the bottom right corner of the console window:

enter image description here

Sisneros answered 30/7, 2024 at 14:14 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.