В настоящее время я пытаюсь немного настроить OpenCms (CMS с открытым исходным кодом на основе java), в котором используется встроенный FCKEditor, к которому я пытаюсь получить доступ с помощью js / jQuery .
Я пытаюсь получить html-содержимое iframe, но всегда возвращаю null. Вот как я пытаюсь получить html-контент из iframe:
var editFrame = document.getElementById('ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame');
alert( $(editFrame).attr('id') ); // returns the correct id
alert( $(editFrame).contents().html() ); // returns null (!!)
Глядя на снимок экрана, я хочу получить доступ к html-разделу «LargeNews1 / Teaser», который в настоящее время содержит значения «Newsline en ...» . Ниже вы также можете увидеть структуру html в Firebug.
Однако $ (editFrame) .contents (). Html ()
возвращает значение null, и я не могу понять почему, тогда как $ (editFrame) .attr ('id')
возвращает правильный идентификатор.
Контент iframe / FCKEditor находится на том же сайте / домене, межсайтовых проблем нет.
HTML-код iframe находится по адресу http://pastebin.com/hPuM7VUz
Обновлено:
вот решение, которое работает:
var editArea = document.getElementById('ta_OpenCmsHtml.LargeNews_1_.Teaser_1_.0___Frame').contentWindow.document.getElementById('xEditingArea');
$(editArea).find('iframe:first').contents().find('html:first').find('body:first').html('some new
value');
Похож на jQuery, не предоставляет метод для выборки всего HTML iFrame, однако так как он обеспечивает доступ к собственному элементу DOM, гибридный подход возможен:
$("iframe")[0].contentWindow.document.documentElement.outerHTML;
Это возвратит HTML iFrame включая <THTML>
, <HEAD>
и <BODY>
.