Измените контекст консоли Safari 6 на iframe на странице.

Я знаю, что Chrome давайте вы выберете контекст для выполнения консоли с помощью раскрывающегося меню, и этот Firebug позволит вам cd() в iframe. Я не могу понять, как изменить контекст в консоли Safari. Кто-нибудь знает как это сделать?


person Aaron Gibralter    schedule 19.02.2013    source источник


Ответы (2)


Safari, в отличие от Chrome и Firefox, не имеет реальной поддержки этой функции, и кажется, что единственный вариант — получить доступ к объекту окна из консоли. Как вы правильно указали, это вызовет проблемы междоменной политики, однако при условии, что вы работаете на Mac (по какой-то причине это не работает в Windows), вы можете использовать

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

чтобы обойти это. А затем в вашем jsbin вы можете использовать что-то вроде

window.frames[0]

для доступа к окну страницы. Насколько я вижу, аналогичного решения для окон нет, т.к.

Safari.exe --disable-web-security

видимо не работает.

person David Mulder    schedule 06.03.2013

Сам элемент Iframe имеет тип окна в консоли.

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

В консоли Safari вы просто работаете с

frame.document.write('bla');

обратите внимание, что «кадр» — это сокращение от document.getElementById('frame')

person mr.VVoo    schedule 20.02.2013
comment
К сожалению, это не работает с фреймами с доменом, отличным от хост-страницы. Вот почему команда firebug cd и раскрывающееся меню Chrome для изменения контекста так полезны... - person Aaron Gibralter; 21.02.2013
comment
Конечно? Я попробовал это с другим URL, и это сработало. Только для публикации я изменил это на about:blank. - person mr.VVoo; 21.02.2013
comment
Ага: jsbin.com/ojiley/2 -- когда я открываю консоль Safari и набираю: document.getElementById("test-iframe").document I получить undefined: cl.ly/image/0N0v1l223w1m - person Aaron Gibralter; 21.02.2013
comment
попробуйте document.getElementById("test-iframe").contentDocument или document.getElementById("test-iframe").contentWindow. дополнительно можно вывести все части фрейма в консоль: for(var key in document.getElementById("test-iframe")) console.log(key); чтобы найти все полезные атрибуты. - person mr.VVoo; 21.02.2013
comment
Нет, я все еще не могу получить доступ к чему-либо в iframe. Вы уверены, что используете Safari 6.x? - person Aaron Gibralter; 21.02.2013
comment
Да, конечно. Safari 6 на OS X Mountain Lion. И я попробовал их, и у меня был доступ к объекту документа iframe. - person mr.VVoo; 21.02.2013
comment
Хм, @mr.VVoo, не могли бы вы сказать мне, какой код вы вводите в консоль Safari Web Inspector, чтобы получить доступ к элементу dom на странице Amazon.com в iframe? - person Aaron Gibralter; 22.02.2013
comment
вот скриншот imageshack.us/photo/my-images/833/bildschirmfoto20130221u. png - person mr.VVoo; 22.02.2013
comment
давайте продолжим это обсуждение в чате - person Aaron Gibralter; 22.02.2013