Селекторы Firebug и jQuery в iFrame

Я работаю над веб-приложением и с помощью JQuery plug-in Colorbox вывожу окно, представляющее форму для редактирования элементов родительского окна. Я использую Firebug для отладки моего Javascript и jQuery, и я заметил, что я не могу выбрать элемент в моей форме HTML-кода Colorbox с помощью командной строки консоли jQuery. Например:

$date = $( "# date" );

ничего не возвращает при запуске из командной строки консоли jQuery, хотя у меня есть входной элемент с id = "date", а указатель элемента "Firebug" проверяет "элемент" в iFrame. Есть ли способ получить консоль Firebug для доступа к элементам в iFrame?

Спасибо за вашу помощь! Дуг

Ответ 1

Вам нужно передать документ iframe в качестве контекста для вашего селектора, потому что iframe имеет собственное разделенное дерево DOM:

$('#date', $('iframe').get(0).contentDocument);

Чтобы получить доступ к содержимому iframe, он должен быть загружен из того же домена, что и родительский документ.


Чтобы подробно остановиться здесь, свойство .contentDocument работает в Chrome (и FF), но не в IE < 8. Вы должны использовать .document.

Ответ 2

Вы ищете метод cd, описанный здесь: http://getfirebug.com/wiki/index.php/Command_Line_API

Вот букмарклет, который я использую для автоматизации перехода в iframe для любого iframed приложения Facebook. Он должен предоставить достаточно примера для изменения для вашего использования.

javascript:with(_FirebugCommandLine){cd($$(".canvas_iframe_util")[0].contentWindow)}

Обратите внимание, что with, как правило, является плохой практикой, но это буквально то, как Firebug выполняет то, что вы вводите в консоль, поэтому я имитировал это.

После того, как вы запустили это, все, что вы вводите в командной строке, выполняется в контексте iframe.