Селекторы 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.